文章
137
粉丝
0
获赞
0
访问
8.4k

评分及理由
(1)信号量定义得分及理由(满分3分)
学生定义了两个信号量Y和Z,分别用于保护y和z变量。标准答案使用了三个信号量:mutex_y1、mutex_y2和mutex_z,其中y变量需要两个信号量来分别保护thread1与thread3、thread2与thread3之间的互斥访问。学生只用一个Y信号量保护y变量,虽然能保证互斥,但会降低并发度(比如thread1和thread2无法同时访问y)。因此扣1分。信号量Z的定义正确,得1分。本部分得2分。
(2)thread1实现得分及理由(满分1分)
thread1中正确使用了P(Y)和V(Y)来保护对y的访问,虽然信号量设计不够优化,但实现了基本的互斥功能。得1分。
(3)thread2实现得分及理由(满分2分)
thread2中同时获取了Z和Y信号量,保护了对y和z的访问,逻辑正确。但获取顺序与标准答案不同(标准答案先Y后Z,学生先Z后Y),这可能在某些情况下产生死锁风险。不过从互斥的角度看,实现基本正确。扣1分。得1分。
(4)thread3实现得分及理由(满分2分)
thread3中对z的操作正确使用了P(Z)/V(Z),得1分。对y的操作正确使用了P(Y)/V(Y),得1分。虽然信号量设计不够优化,但实现了基本的互斥功能。本部分得2分。
题目总分:2+1+1+2=6分
登录后发布评论
暂无评论,来抢沙发