文章
159
粉丝
0
获赞
0
访问
9.8k
semaphore chopsticks[n]; //n只筷子
for(int i = 0 ; i<n ;i++){
chopsticks[i]=1;
}
semaphore bowl = m; //碗的数量
semaphore mutex = 1 //实现一个哲学家同时取左右筷子;
cobegin
while(true){
p(mutex);
p(chopsticks[i]);
p(chopsticks[(i+1)%n]);//同时取左右筷子
v(mutex);
//同时取到左右筷子的可以拿碗吃饭
p(bowl)
就餐;
v(chopsticks[i]);
v(chopsticks[(i+1)%n]);
v(bowl);
}
评分及理由
(1)得分及理由(满分8分)
得分:5分
理由:
mutex
信号量来避免死锁,但这种方法限制了并发性,可能导致性能问题(-1分)。min(m, n-1)
),导致逻辑不完整(-2分)。题目总分:5分
登录后发布评论
暂无评论,来抢沙发