文章
28
粉丝
0
获赞
1
访问
1.6k

评分及理由
(1)信号量含义与初值(满分2分)
学生定义了三个信号量:product(初值0,表示产品数量)、empty(初值1000,表示缓冲区空位数)、mutex(初值1,用于消费者互斥)。其中product和empty的含义和初值正确,但mutex仅用于消费者互斥,缺少生产者之间的互斥信号量(标准答案中需要两个互斥信号量mutex1和mutex2)。因此信号量定义不完整,但含义和初值部分正确。得1分。
(2)生产者之间的互斥(满分1分)
学生代码中生产者未使用任何互斥信号量保护“放入”操作,多个生产者可能同时写入缓冲区导致数据错误。缺少必要的互斥机制,逻辑错误。得0分。
(3)生产者与消费者之间的同步(满分2分)
生产者P(empty)后放入,V(product);消费者在for循环中先取产品再P(product)和V(empty),但P(product)放在了取走产品之后,这会导致在缓冲区为空时消费者仍可能先执行取操作(此时产品尚未被确认存在),同步顺序错误,可能造成数据不一致。逻辑错误。得0分。
(4)消费者之间互斥(满分1分)
消费者使用P(mutex)和V(mutex)包裹整个for循环,实现了“一个消费者连续取10件产品后其他消费者才能取”的要求,互斥逻辑正确。得1分。
(5)控制消费者连续取10件产品(满分2分)
消费者在for循环中连续取10次,并利用mutex保证整个过程原子性,符合题目要求。得2分。
题目总分:1+0+0+1+2 = 4分
登录后发布评论
暂无评论,来抢沙发