文章
85
粉丝
0
获赞
2
访问
3.8k
评分及理由
(1)信号量定义(满分3分)
学生定义了三个信号量mutexY1、mutexY2和mutexZ,初始值均为1,与标准答案完全一致。信号量命名和含义正确,分别用于保护y和z的互斥访问,且区分了thread1与thread3、thread2与thread3对y的不同互斥需求。得3分。
(2)thread1代码(满分1分)
学生代码中,thread1在访问y前执行P(mutexY1),访问后执行V(mutexY1),正确实现了对y的互斥访问(仅与thread3互斥),且未引入不必要的互斥操作。与标准答案一致。得1分。
(3)thread2代码(满分1分)
学生代码中,thread2在访问y和z前分别执行P(mutexY2)和P(mutexZ),访问后执行V(mutexY2)和V(mutexZ),互斥顺序正确(先获取y锁再获取z锁),且释放顺序与标准答案一致(先释放y锁再释放z锁)。虽然标准答案释放顺序为先z后y,但信号量释放顺序不影响正确性,因此不扣分。得1分。
(4)thread3代码(满分3分)
学生代码中,thread3对z的访问正确使用P/V(mutexZ)保护;对y的访问正确使用P(mutexY1)和P(mutexY2)(获取两个y锁)以及V(mutexY1)和V(mutexY2)(释放两个y锁),与标准答案完全一致。得3分。
题目总分:3+1+1+3=8分
登录后发布评论
暂无评论,来抢沙发