5个哲学家代表5个线程,就是说哲学家就是线程本身!
筷子是这五个线程之外的变量,这五个哲学家线程因为这几个变量的值的变化而改变自身行为,
而哲学家线程因为自身的行为又在影响着五根筷子的值。
所以这个问题的本质是:
一个哲学家(线程),通过自身的行为状态,在影响着其他线程。
五个哲学家(线程),通过自身的行为状态,在互相影响着对方,
而筷子只是他们互相作用的媒介!且把闲话少提,接分才是正事。

解决方案 »

  1.   

    哲学家问题是研究死锁问题的经典,每本操作系统的书上必有这个算法:)它主要是考虑怎样避免5位哲学家同时举起左(右)手拿起筷子使他们都无法进食。当然也要考虑怎样避免饿死的情况。在这里哲学家相当于进程(线程),筷子相当于资源!!
      

  2.   

    这个算法很经典的!
    死锁问题!
      

  3.   

    哲学家是个线程啦,共同竞争资源:筷子。
    楼主提供算法显然没有考虑死锁,其实大家可以讨论一下这个问题:
    我的初步思路是:要么同时拿起两只筷子,要么都放下,当锁定一个以后发现另一个被锁定的时候应该主动放弃前一个锁。
    不知道大家有没有更好的思路。^_^
      

  4.   

    我个程序有很多种算法,常用的是再设置一个管理员(即添加一个信号量使同时最多只能有4个哲学家就座,那到少会有一个人能吃钣!!另外还有就是规定哲学家必须先拿起左边的筷子再搻起右边的筷子等等,算法很多,操作系统的书上会有所提及!!
      

  5.   

    看完以后有些明白了,先把程序收起 回去努力钻研下