文章
224
粉丝
0
获赞
1
访问
33.0k

评分及理由
(1)信号量定义得分及理由(满分3分)
得分:1分
理由:学生定义了mutex_z和mutex_y两个信号量,其中mutex_z用于保护变量z是正确的(1分)。但是缺少对y变量的细粒度控制,标准答案需要两个独立的信号量mutex_y1和mutex_y2来分别控制thread1-thread3和thread2-thread3对y的访问,而学生只用一个mutex_y无法实现最大程度的并发。另外定义了一个不必要的count信号量和计数器,增加了复杂度但没有正确解决问题。
(2)thread1实现得分及理由(满分1.5分)
得分:0分
理由:thread1的实现逻辑混乱。使用了复杂的计数器机制来试图控制对y的访问,但代码逻辑存在严重错误:在w=add(x,y)后重复出现了count++和V操作,且最后的条件判断逻辑错误。没有正确实现对y的互斥访问保护。
(3)thread2实现得分及理由(满分1.5分)
得分:0分
理由:thread2的实现同样存在严重逻辑错误。在P(mutex_count)后直接V(mutex_y)会释放y锁,这是错误的。对z的操作顺序混乱,先V(mutex_z)后P(mutex_z)没有意义。计数器机制使用不当,无法正确保护对y和z的访问。
(4)thread3实现得分及理由(满分2分)
得分:0.5分
理由:对z的操作部分基本正确,P(mutex_z)和V(mutex_z)保护了z的访问(0.5分)。但对y的操作逻辑完全错误,计数器使用混乱,条件判断if(count>=0)逻辑不合理,且缺少必要的V操作来释放信号量。
题目总分:1+0+0+0.5=1.5分
登录后发布评论
暂无评论,来抢沙发