- 0
- 0
- 约8.91千字
- 约 12页
- 2018-05-11 发布于浙江
- 举报
哲学家进餐问题汇
哲学家进餐问题
2007/05/16 12:36 P.M.
/********************philosophers.cpp哲学家进餐问题在多线程中如何避免死锁。
问题描述:有五位哲学家围绕着餐桌坐,每一位哲学家要么思考要么等待,要么吃饭。为了吃饭,哲学家必须拿起两双筷子(分别放于左右两端)不幸的是,筷子的数量和哲学家相等,所以每只筷子必须由两位哲学家共享
下面是一种有问题的解法,因为在某个时刻,五个哲学家同时拿起五根左手边的筷子,则它们会在同一时候对待右手边的筷子,这样会陷入死锁,但是我测试了,这样的几率并不高经过几个小时,还没有出现。但是我们可以肯定,理论上是肯定会出现死锁的,我们不能老是靠运气办事,怎么解决这个问题呢留给下一步的学习吧
要编译此文件请用多线程版的c++库********************/
#include windows.h#include iostream#include process.h#include cstdlib#include ctime
using namespace std;unsigned int __stdcall philosopher(void *);
void thinking(int);void eating(int);void wait_to_eat(int);
void
原创力文档

文档评论(0)