←上一题某进程中有 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())操作,要求确保线程互斥访问临界资源,并且最大程度地并发执行。