文章
183
粉丝
0
获赞
1
访问
61.7k

评分及理由
(1)信号量定义得分及理由(满分3分)
得分:1分
理由:学生定义了两个信号量mutex_y和mutex_z,分别用于保护y和z的互斥访问。标准答案需要三个信号量(mutex_y1, mutex_y2, mutex_z),因为thread1和thread2都需要访问y,且thread3同时修改y和z,需要更细粒度的锁来保证最大并发。学生只定义了两个信号量,对y的保护不够充分,扣2分。
(2)thread1实现得分及理由(满分1分)
得分:0分
理由:thread1中出现了两次w=add(x,y),其中一次在P/V操作之外,这会导致对y的访问没有受到保护。正确的做法应该将整个add操作放在P/V操作内。这是一个逻辑错误,扣1分。
(3)thread2实现得分及理由(满分2分)
得分:1分
理由:thread2正确地使用了P(mutex_z)和P(mutex_y)来保护对y和z的访问,并且有对应的V操作。但是由于信号量定义不足,无法实现thread1和thread2对y的同时访问,扣1分。
(4)thread3实现得分及理由(满分2分)
得分:1分
理由:thread3正确地分别保护了对z和y的修改操作,使用了相应的P/V操作。但由于信号量定义不足,无法实现与thread1和thread2的最大并发,扣1分。
题目总分:1+0+1+1=3分
登录后发布评论
暂无评论,来抢沙发