文章
397
粉丝
40
获赞
2
访问
88.2k
//复数的结构类型定义
typedef struct
{
float a;
float b;
}cnum;
cnum x,y,z; //全局变量
semaphore mutex_y1 = 1;//线程1和线程3之间关于全局变量y的互斥锁
semaphore mutex_y2 = 1;//线程2和线程3之间关于全局变量y的互斥锁
semaphore mutex_z = 1;//线程2和线程3之间关于全局变量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;
p(mutex_y1);
w=add(x,y);
v(mutex_y1);
...
}
thread2
{
cnum w;
p(mutex_y2);
p(mutex_z);
w=add(y,z);
v(mutex_y2);
v(mutex_z);
...
}
thread3
{
cnum w;
w.a=1;
w.b=2;
p(mutex_z);
z=add(z,w);
v(mutex_z);
p(mutex_y2);
p(mutex_y1);
y=add(y,w);
v(mutex_y1);
v(mutex_y2);
...
}
评分及理由
(1)信号量定义部分(满分3分)
学生定义了三个信号量:mutex_y1、mutex_y2和mutex_z,与标准答案一致,且初始值均为1,正确。得3分。
(2)thread1代码部分(满分1分)
学生使用p(mutex_y1)和v(mutex_y1)保护了w=add(x,y)操作,确保了对y的互斥访问,且与标准答案一致。得1分。
(3)thread2代码部分(满分1分)
学生使用p(mutex_y2)和p(mutex_z...
登录后发布评论
暂无评论,来抢沙发