文章
103
粉丝
0
获赞
0
访问
3.8k
semaphore empty = 1000;
semaphore full = 0;
semaphore mutex = 1;
semaphore count = 10;
semaphore mutexconsume = 1;
cobegin 生产者{
p(empty)
p(mutex)
生产1
v(mutex)
v(full)
}
coend
cobegin 消费者{
p(mutexconsume) count初值10,mutexconsume保证一个消费者没消费10个前其他消费者不能消费产品
while(count>0){
p(full)
p(mutex)
消费1
v(mutex)
count--;
v(empty)
}
count = 10; count变回10
v(mutexconsum) 允许其他消费者进入消费
}
评分及理由
(1)信号量的初值和含义(满分2分)
得分:2分
理由:信号量的定义和初值正确,empty、full、mutex、count、mutexconsume的含义和初值均符合题目要求。
(2)生产者进程的实现(满分1分)
得分:1分
理由:生产者进程的互斥和同步操作正确,使用了empty和full信号量控制缓冲区空位和产品数量,mutex信号量保证互斥访问缓冲区。
(3)消费者进程的实现(满分5分)
得分:4分
理由:消费者进程的实现基本正确,使用了mutexconsume信号量保证一个消费者连续取10件产品,其他消费者不能取产品。但存在以下逻辑错误:
因此扣1分。
题目总分:2+1+4=7分
登录后发布评论
暂无评论,来抢沙发