文章
296
粉丝
0
获赞
0
访问
21.9k

评分及理由
(1)信号量定义得分及理由(满分3分)
得分:2分
理由:学生定义了三个信号量mutex_X、mutex_Y、mutex_Z,分别用于保护x、y、z三个全局变量。其中mutex_X的定义是多余的,因为x变量只在thread1中被读取,没有写操作,且没有与其他线程产生冲突,因此不需要互斥保护。标准答案中只定义了mutex_y1、mutex_y2和mutex_z三个信号量,更精确地处理了y变量的并发访问问题。扣1分。
(2)thread1实现得分及理由(满分1分)
得分:0.5分
理由:thread1中对x和y的访问都加了锁,虽然保证了互斥,但锁的粒度太大,影响了并发性能。特别是对x的加锁是不必要的。标准答案中只对y进行互斥保护,且使用专门的mutex_y1信号量。扣0.5分。
(3)thread2实现得分及理由(满分1分)
得分:0.5分
理由:thread2中对y和z的访问顺序加锁,虽然保证了互斥,但锁的获取顺序可能与其他线程产生死锁风险。标准答案中使用mutex_y2和mutex_z,更精确地控制互斥范围。扣0.5分。
(4)thread3实现得分及理由(满分3分)
得分:1.5分
理由:thread3中对z的访问加锁正确(1分),但对y的访问只使用了一个mutex_Y信号量,没有考虑到y可能被多个线程同时访问的情况。标准答案中需要对y加两个互斥锁(mutex_y1和mutex_y2)来确保与thread1和thread2的互斥。扣1.5分。
题目总分:2+0.5+0.5+1.5=4.5分
登录后发布评论
暂无评论,来抢沙发