文章
55
粉丝
0
获赞
2
访问
3.8k

评分及理由
(1)信号量定义部分得分及理由(满分3分)
学生定义了三个信号量 mutex1、mutex2、mutex3,分别注释为互斥使用 y、z、w。标准答案中需要三个信号量分别保护 y(两个信号量分别对应 thread1-thread3 和 thread2-thread3 的互斥)、z(一个信号量)。学生将 w 也作为需要互斥的全局变量是错误的,因为每个线程中的 w 是局部变量,不存在互斥问题。此外,对 y 仅用一个信号量保护无法满足 thread1 和 thread2 可同时与 thread3 互斥但彼此不互斥的要求,因此信号量设计存在逻辑错误。扣2分,得1分。
(2)线程互斥代码部分得分及理由(满分5分)
thread1 中只对 w(局部变量)加锁,未对全局变量 y 加锁,无法保证与 thread3 对 y 的互斥访问,逻辑错误,扣2分;thread2 中同样只对 w 加锁,未对 y 和 z 加锁,无法保证与 thread3 对 y、z 的互斥,逻辑错误,扣2分;thread3 中对 w 加锁多余,且对 y 只用一个 mutex1 加锁,无法实现与 thread1、thread2 之间的精细互斥(即允许 thread1 和 thread2 并发),但至少对 y 和 z 的写操作加了锁,有一定保护作用,扣1分。该部分得0分。
题目总分:1+0=1分
登录后发布评论
暂无评论,来抢沙发