文章
63
粉丝
0
获赞
0
访问
13.1k
int amount_bowl = m, amount_chop = n-1;
// 实现对碗这一互斥资源的互斥访问
semaphore bowl = min(amount_bowl, amount_chop);
semaphore chopsticks[n]; // 实现对筷子这一互斥资源的互斥访问
for (int i = 0; i <= amount_chop; i ++) {
chopsticks[i] = 1; // 每两个哲学家之间的筷子数量是一只
}
CoBegin{
while(TRUE) {
进行思考;
P(bowl); // (互斥)拿起一个碗
P(chopsticks[(i+1) MOD n]); // (互斥)拿起右侧筷子
P(chopsticks[i]; //(互斥拿起左侧的筷子)
开始就餐;
V(chopsticks[(i+1) MOD n]); // (互斥)放下右侧筷子
V(chopsticks[i]); // (互斥)放下左侧的筷子
V(bowl); // (互斥)放下一个碗
}
}CoEnd
评分及理由
(1)信号量定义与初始化部分(满分3分)
得分:2分
理由:
(2)哲学家进程实现部分(满分5分)
得分:3分
理由:
题目总分:2+3=5分
登录后发布评论
暂无评论,来抢沙发