文章
480
粉丝
0
获赞
1
访问
65.1k

评分及理由
(1)信号量定义得分及理由(满分3分)
学生定义了三个信号量:mutexZ、mutexY1、mutexY2,与标准答案的mutex_z、mutex_y1、mutex_y2含义完全一致,且初始值均为1。此处得3分。
(2)thread1代码得分及理由(满分1分)
thread1中正确使用P(mutexY1)和V(mutexY1)保护了对全局变量y的读操作(在add(x, y)中),与标准答案一致。此处得1分。
(3)thread2代码得分及理由(满分2分)
thread2中需要互斥访问y和z。学生代码中先P(mutexZ)后P(mutexY2),而标准答案是先P(mutex_y2)后P(mutex_z)。虽然顺序不同,但根据“思路正确不扣分”的原则,只要实现了对y和z的互斥访问且能避免死锁,即为正确。学生的顺序同样可以避免死锁(因为thread3中访问y和z时,对mutexY1/Y2和mutexZ的申请是分开的,不会形成循环等待)。因此此处不扣分,得2分。
(4)thread3代码得分及理由(满分2分)
thread3的操作分为两部分:更新z和更新y。学生代码正确使用P(mutexZ)/V(mutexZ)保护了对z的更新。在更新y时,正确使用了P(mutexY1)和P(mutexY2)来获得对y的独占访问权(因为thread1和thread2可能同时读y),与标准答案一致。此处得2分。
题目总分:3+1+2+2=8分
登录后发布评论
暂无评论,来抢沙发