文章
59
粉丝
0
获赞
0
访问
1.6k

评分及理由
(1)信号量定义部分得分及理由(满分3分)
学生定义了多个信号量,但存在严重逻辑错误:
1. 将同步信号量 y1、y2、z 初始化为 0,这是错误的。题目要求互斥访问,应使用互斥信号量(初始值为1),而不是同步信号量(初始值为0)。同步信号量的错误使用会导致线程无法正常进入临界区,属于逻辑错误。
2. 信号量命名和用途混乱,未清晰对应到具体共享变量(y、z)的互斥访问。
扣分:信号量定义全部错误,扣3分。
得分:0分。
(2)线程1代码得分及理由(满分1分)
线程1中:
1. 错误使用了 P(y1),这会导致线程1等待一个永远不会由其他线程执行的 V(y1)(因为y1是同步信号量且初始为0,而thread3的V(y1)在P(mutex1)之后,可能产生死锁或无法执行)。
2. 虽然使用了 P(mutex1) 和 V(mutex1) 保护 add(x,y),但因为没有正确理解互斥对象,且前面 P(y1) 导致逻辑错误。
扣分:逻辑错误,扣1分。
得分:0分。
(3)线程2代码得分及理由(满分1分)
线程2中:
1. 同样错误使用了 P(y2),导致同步逻辑错误。
2. 使用了 P(mutex2) 和 V(mutex2),但未正确处理对 y 和 z 的互斥(标准答案需要两个信号量分别保护 y 和 z)。
扣分:逻辑错误,扣1分。
得分:0分。
(4)线程3代码得分及理由(满分3分)
线程3中:
1. 错误使用了 P(mutex1) 和 P(mutex2),试图用两个互斥信号量保护两个变量,但未考虑与线程1、2的互斥关系,且与同步信号量 y1、y2、z 混用,逻辑混乱。
2. 最后的 V(y1)、V(y2)、V(z) 是基于错误的同步设计,无法正确实现互斥。
扣分:逻辑错误,扣3分。
得分:0分。
题目总分:0+0+0+0=0分
登录后发布评论
暂无评论,来抢沙发