文章

119

粉丝

12

获赞

0

访问

15.2k

头像
【2019年】408计算机统考真题模拟考试 - 第43题答案笔记
操作系统
发布于2024年11月9日 16:46
阅读数 75

计算机考研408统考历年真题及答案解析

至多只允许有n-1位哲学家同时去拿左边的筷子,最终能保证至少有一位哲学家能够进餐,并在用毕时能释放出他用过的两只筷子,从而使更多的哲学家能够进餐。

emaphore count = n-1;    // 可进餐名额数量
semaphore chopsticks[n];   // 所有筷子资源的信号量
for (int i=0; i<n; i++) {
    chopsticks[i] = 1;
}
CoBegin
Process 哲学家i() {
    while (true) {
        思考;
        P(count);
        P(chopsticks[i]);    // 取左边筷子
        P(chopsticks[(i+1)%n]);    // 取右边筷子
        进餐;
        V(chopsticks[i]);    // 放回左边筷子
        V(chopsticks[(i+1)%n]);    // 放回右边筷子
        V(count);
    }
}
CoEnd

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发