文章
13
粉丝
0
获赞
0
访问
181

评分及理由
(1)信号量定义得分及理由(满分3分)
学生定义了mutexy和mutexz两个信号量,但缺少对y变量的细粒度控制。标准答案需要mutex_y1和mutex_y2两个信号量来分别控制thread1与thread3、thread2与thread3对y的访问,以实现最大并发。学生只用一个mutexy会降低并发度。得1分(只正确定义了z的信号量)。
(2)thread1实现得分及理由(满分1分)
thread1正确使用P(mutexy)和V(mutexy)保护了对y的访问,虽然使用的信号量名称与标准答案不同,但逻辑正确。得1分。
(3)thread2实现得分及理由(满分2分)
thread2中存在逻辑错误:先P(mutexz)后P(mutexy),但w=add(y,z)需要同时访问y和z,应该先获取y的锁再获取z的锁,或者按固定顺序获取以避免死锁。此外,add函数参数识别不清,但根据上下文应为(y,z)。由于存在获取锁顺序不当的问题,扣1分,得1分。
(4)thread3实现得分及理由(满分2分)
thread3中存在严重逻辑错误:在修改y时写成了"z = add(y,w)",这明显是笔误,应该是"y = add(y,w)"。由于这个错误会导致程序逻辑完全错误,扣1分。另外,对y的访问只使用一个mutexy,没有实现最大并发,但这不是逻辑错误。综合考虑,得1分。
题目总分:1+1+1+1=4分
登录后发布评论
暂无评论,来抢沙发