文章
102
粉丝
0
获赞
3
访问
5.7k

评分及理由
(1)信号量定义得分及理由(满分3分)
学生定义了两个信号量:mutex-y 和 mutex-z,分别用于保护变量 y 和 z 的互斥访问。标准答案中使用了三个信号量:mutex_y1、mutex_y2 和 mutex_z,其中 mutex_y1 和 mutex_y2 分别用于 thread1 与 thread3、thread2 与 thread3 对 y 的互斥访问。学生的方案只用一个 mutex-y 保护 y,虽然能保证互斥,但并发度不如标准答案高(例如 thread1 和 thread2 不能同时读 y)。因此扣1分。信号量命名和初始值正确,不扣分。得分:2分。
(2)thread1 代码得分及理由(满分1分)
thread1 中正确使用 P(mutex-y) 和 V(mutex-y) 保护了对 y 的访问,逻辑正确。得1分。
(3)thread2 代码得分及理由(满分2分)
thread2 中先 P(mutex-y) 再 P(mutex-z),然后执行 w=add(y,z),最后 V(mutex-z) 和 V(mutex-y),顺序正确,互斥保护完整。得2分。
(4)thread3 代码得分及理由(满分2分)
thread3 中先对 z 进行 P-V 操作保护,然后对 y 进行 P-V 操作保护,逻辑正确。虽然只用一个 mutex-y 保护 y,不如标准答案并发度高,但题目要求“最大程度地并发执行”是优化目标,学生的方案在互斥正确的前提下是可接受的,且题目没有要求必须达到最优并发度,因此不扣分。得2分。
题目总分:2+1+2+2=7分
登录后发布评论
暂无评论,来抢沙发