文章
117
粉丝
160
获赞
0
访问
3.7k

评分及理由
(1)信号量定义部分(满分3分)
得分:3分
理由:学生定义了三个信号量 y1、y2、z,初始值均为1,分别用于保护对 y 和 z 的互斥访问。这与标准答案中 mutex_y1、mutex_y2、mutex_z 的作用完全一致,命名虽不同但含义正确,因此得满分。
(2)thread1 实现部分(满分1分)
得分:1分
理由:thread1 只访问全局变量 y(和 x,但 x 未被其他线程修改,无需保护)。学生正确地在 add(x, y) 前后对 y1(即保护 y 的信号量之一)进行了 P、V 操作,实现了 thread1 与 thread3 对 y 的互斥访问,与标准答案逻辑一致。
(3)thread2 实现部分(满分2分)
得分:2分
理由:thread2 需要访问 y 和 z。学生正确地在 add(y, z) 前对 y2 和 z 信号量进行了 P 操作(注意:第二次识别结果中包含了 P(z),这是正确的;第一次识别结果漏了 P(z),但根据“两次识别只要一次正确则不扣分”的原则,以正确版本为准),并在操作后进行了对应的 V 操作,确保了与 thread3 对 y 和 z 的互斥访问,且顺序合理,未造成死锁。
(4)thread3 实现部分(满分2分)
得分:2分
理由:thread3 需要修改 z 和 y。学生先对 z 进行 P-V 操作保护,然后对 y1 和 y2 进行 P 操作以保护 y(确保与 thread1 和 thread2 互斥),修改 y 后进行 V 操作。整个逻辑与标准答案完全一致,且最大程度允许并发(例如,thread1 和 thread2 在 thread3 只修改 z 时仍可并发执行)。
题目总分:3+1+2+2=8分
登录后发布评论
暂无评论,来抢沙发