文章
59
粉丝
0
获赞
1
访问
12.1k
Semaphore buf=1000//缓冲区剩余大小
Semaphore now =0//当前产品数量
Semaphore a=1//消费者互斥取产品
Semaphore b=1//生产者互斥生产产品
While(1) //生产者进程
Producer
{
p(buf);
p(b);
生产产品;
v(now);
v(b);
}
while(1) //消费者进程
Consumer
{
p(a);
for(int i=0;i<10;i++)
{
p(now);取产品;v(buf)
}
v(a);
}
评分及理由
(1)信号量的初值和含义(满分2分)
得分:1分
理由:学生定义了四个信号量buf、now、a、b,但含义描述不够清晰。buf和now的初值正确(1000和0),但a和b的含义描述不明确(应明确是互斥信号量)。扣1分。
(2)生产者之间的互斥操作(满分1分)
得分:1分
理由:生产者通过信号量b实现了互斥访问缓冲区,操作正确,不扣分。
(3)生产者与消费者之间的同步操作(满分2分)
得分:1分
理由:学生使用了buf和now实现同步,但未完全正确体现缓冲区空和满的条件(缺少对缓冲区满的判断)。扣1分。
(4)消费者之间互斥操作(满分1分)
得分:1分
理由:消费者通过信号量a实现了互斥连续取10件产品,操作正确,不扣分。
(5)控制消费者连续取产品数量(满分2分)
得分:2分
理由:学生通过for循环和信号量a实现了连续取10件产品的逻辑,完全正确,不扣分。
题目总分:1+1+1+1+2=6分
登录后发布评论
暂无评论,来抢沙发