文章
302
粉丝
0
获赞
15
访问
52.2k

评分及理由
(1)信号量定义得分及理由(满分3分)
学生定义了三个信号量:y1、y2、z,分别用于保护y和z的访问。这与标准答案中的mutex_y1、mutex_y2、mutex_z作用一致,只是命名不同。信号量初始值均为1,正确。因此得3分。
(2)thread1代码得分及理由(满分1分)
thread1中使用了P(y1)和V(y1)来保护对y的访问,与标准答案一致,确保与thread3对y的互斥访问。代码逻辑正确,得1分。
(3)thread2代码得分及理由(满分2分)
thread2中先P(y2)再P(z),然后执行w=add(y,z),最后V(y2)和V(z)。这里存在一个逻辑错误:标准答案中先V(mutex_z)再V(mutex_y2),而学生答案中先V(y2)后V(z)。这可能导致死锁风险,因为thread3中需要同时获取y1和y2,如果thread2先释放y2,thread3可能获取y2但等待y1,而thread1可能持有y1等待其他资源,形成循环等待。因此扣1分,得1分。
(4)thread3代码得分及理由(满分2分)
thread3中先对z进行操作(P(z)和V(z)),然后对y进行操作(P(y1)、P(y2)和V(y1)、V(y2)),与标准答案一致。代码逻辑正确,得2分。
题目总分:3+1+1+2=7分
登录后发布评论
暂无评论,来抢沙发