文章
63
粉丝
0
获赞
0
访问
13.1k
semaphore mutex_y_13 = 1; // 实现thread1与thread3对y的互斥访问
semaphore mutex_z_23 = 1; // 实现thread2与thread3对z的互斥访问
CoBegin
thread1{
cnum w;
P(mutex_y_13); // (互斥) 防止thread3读写y
w = add(x, y); // 涉及对互斥资源y的读取
V(mutex_y_13); // (互斥) 允许thread3读写y
...
}
thread2{
cnum w;
P(mutex_y_23); // (互斥) 防止thread3读写y
P(mutex_z); // (互斥) 防止thread3读写z
w = add(y, z); // 涉及对互斥资源y和z的读取
V(mutex_z); // (互斥) 允许thread3读写z
V(mutex_y_23); // (互斥) 允许thread3读写y
...
}
thread3{
cnum w;
w.a = 1;
w.d = 1;
P(mutex_z); // (互斥) 防止读写z时thread2读z
z = add(z, w); // 涉及对互斥资源z的读写
V(mutex_z); // (互斥) 读写完毕, 允许thread2读z
P(mutex_y_13); // (互斥) 防止读写y时thread1读y
P(mutex_z_23); // (互斥) 防止读写y时thread2读y
y = add(y, w); // 涉及对互斥资源y的读写
V(mutex_y_13); // (互斥) 读写完毕, 允许thread1读y
V(mutex_y_23); // (互斥) 读写完毕, 允许thread2读y
...
}
CoEnd
评分及理由
(1)信号量定义得分及理由(满分3分)
学生定义了2个信号量:mutex_y_13(用...
登录后发布评论
暂无评论,来抢沙发