操作系统题库
120 / 2162017 · 解答题

2017 年 408 真题

2017 年 408 操作系统 · 第 46 题

选中文字高亮 · 下划线

某进程中有 3 个并发执行的线程 thread1、thread2、thread3,其伪代码如下所示。


//复数的结构类型定义
typedef struct
{
    float a;
    float b;
} cnum;

//全局变量
cnum x,y,z;

//计算两个复数之和
cnum add(cnum p,cnum q)
{
    cnum s;
    s.a=p.a+q.a;
    s.b=p.b+q.b;
    return s;
}

thread1
{
    cnum w;
    w=add(x,y);
    ...
}

thread2
{
    cnum w;
    w=add(y,z);
    ...
}






thread3
{
    cnum w;
    w.a=1;
    w.b=2;
    z=add(z,w);
    y=add(y,w);
    ...
}









请添加必要的信号量和 P、V(或 wait()、signal())操作,要求确保线程互斥访问临界资源,并且最大程度地并发执行。