Appearance
题目
某进程中有 3 个并发执行的线程 thread1、thread2、thread3,其伪代码如下:
c
// 复数的结构类型定义
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)操作,要求确保线程互斥访问临界资源,并且最大程度地并发执行。