文章
62
粉丝
0
获赞
0
访问
10.0k
semaphore mutex = 0, w = 0, rw = 0;
int count = 0;
thread1
{
P(w);
P(mutex);
if(count == 0)
P(rw);
count++;
V(mutex);
V(w);
cnum w;
w=add(x, y);
...
P(mutex);
count--;
if(count == 0)
V(rw);
V(mutex);
}
thread2
{
P(w);
P(mutex);
if(count == 0)
P(rw);
count++;
V(mutex);
V(w);
cnum w;
w=add(y, z);
...
P(mutex);
count--;
if(count == 0)
V(rw);
V(mutex);
}
thread3
{
P(w);
P(rw);
cnum w;
w.a = 1;
w.b = 1;
z = add(z, w);
y = add(y, w);
...
V(rw);
V(w);
}
评分及理由
(1)信号量设计得分及理由(满分3分)
学生使用了mutex、w、rw三个信号量和count计数器,这是读者-写者问题的解决方案。但题目要求的是对特定共享变量(y、z)的互斥访问,而不是通用的读写控制。学生的信号量设计没有针对具体共享资源进行精确控制,与题目要求的"确保线程互斥访问临界资源"不完全匹配。得1分。
(2)互斥实现得分及理由(满分5...
登录后发布评论
暂无评论,来抢沙发