文章
77
粉丝
9
获赞
2
访问
7.4k
int bowl = m;
int chopsticks[n];
semaphore mutex = 1;//一把大锁,用于一次性获取所有资源才能吃饭
philosopher_i {
while(1) {
P(mutex);
if (!bowl && !chopsticks[i] && !chopsticks[(i+1)%n]) {
bowl--;
chopsticks[i]--;
chopsticks[(i+1)%n]--;
} else {
V(mutex);
思考;
continue;
}
V(mutex);
吃饭;
P(mutex);
bowl++;
chopsticks[i]++;
chopsticks[(i+1)%n]++;
V(mutex);
思考;
}
}
登录后发布评论
暂无评论,来抢沙发