文章
91
粉丝
0
获赞
4
访问
9.5k

评分及理由
(1)信号量定义得分及理由(满分3分)
学生定义了三个信号量:mutex_x、mutex_y、mutex_z,各初始化为1。其中mutex_x未被使用,而mutex_y用于保护y变量,mutex_z用于保护z变量。标准答案使用了mutex_y1和mutex_y2两个信号量来分别保护thread1与thread3、thread2与thread3对y的访问,以实现更细粒度的并发控制。学生使用单个mutex_y会导致thread1和thread2在访问y时相互阻塞,降低了并发性。因此信号量定义部分不能得满分,扣1分。得分:2分。
(2)thread1代码得分及理由(满分1分)
学生对thread1使用了P(mutex_y)和V(mutex_y)来保护对y的访问,逻辑正确。虽然使用的信号量与标准答案不同,但确保了thread1与thread3对y的互斥访问。思路正确不扣分。得分:1分。
(3)thread2代码得分及理由(满分2分)
学生对thread2使用了P(mutex_y)和P(mutex_z)来保护对y和z的访问,顺序正确,且使用了V操作释放资源。虽然使用的mutex_y是单一信号量,与标准答案的mutex_y2不同,但逻辑正确,确保了互斥访问。思路正确不扣分。得分:2分。
(4)thread3代码得分及理由(满分2分)
学生对thread3在修改z时使用了P/V(mutex_z),在修改y时使用了P/V(mutex_y),逻辑正确。但标准答案中在修改y时需要同时获取mutex_y1和mutex_y2,以实现与thread1和thread2的互斥,而学生使用单一mutex_y虽然能保证互斥,但会降低并发性。不过题目要求"最大程度地并发执行",学生的方案虽然并发性稍低,但确保了互斥,逻辑正确。思路正确不扣分。得分:2分。
题目总分:2+1+2+2=7分
登录后发布评论
暂无评论,来抢沙发