近日学习多线程编程,总也不熟悉信号量类(CSemaphore)的用法,向来参考源程序学习速度比较快,找到了经典的哲学家进餐问题,写程序总是不顺手,因而用300分求解决哲学家进餐问题的多线程源代码(分不够,可以继续加),希望大侠们帮帮小弟,要求使用用VC集成开发环境,使用MFC CSemaphore类。
希望得到各位的帮助,源代码请寄[email protected],并请抄送[email protected]
谢谢。
==================================================================
哲学家进餐问题概述:
五位哲学家围坐在一张圆桌旁进餐。每个人前面有一只碗,各碗之间分别有一只筷子。每位哲学家先进行独立思考,感到饥饿时便试图占用其左右最靠近他的两个筷子,但他有可能一根也拿不到,因为邻座有可能正在用餐,他不能强行从邻座抢走筷子。但是他必须用两个筷子用餐。用餐完毕后,把筷子放回原处,继续思考问题。
===================================================================
书上的算法简介:
设立一个整型数组state,存储各位哲学家状态——THINKING(思考),EATING(进餐),HUNGRY(饥饿,试图拿筷子)。仅当左右哲学家都不在进餐的时候,该哲学家才能进入进餐状态。第i个哲学家的两个邻座由两个方法left(int index)和right(int index)决定(自己实现)。
程序中使用CSemaphore数组(5个元素),每一个哲学家对应其中一个,如果饥饿的哲学家所需的筷子被别人拿着,他就得等待。
========================================================================
算法都写出来了,我还是不顺利,真心的等待您的帮助。

解决方案 »

  1.   

    <Win32多线程程序设计> 侯捷 译
    这本书的上面有此问题的解答方法, 随书带的光盘上也有关于这个问题的Source Code.
    不好意思,我回答的很冒昧,因为我不知道你提的"书"是不是我说的这本书.
      

  2.   

    唉……我用的书不是这本经典之作呀!能否麻烦你给我传送一下?QQ:11059919,验证请填CSDN
      

  3.   

    Microsoftadherent(王万新) ,有的话也给我一份,我也在学习这些东西,给你加分
      

  4.   

    也给我一份。
    [email protected]
      

  5.   

    秋雨兄:
    你说的 <Win32多线程程序设计> 侯捷 译
    有电子版么
    有的话可否告知下载网址
      

  6.   

    唉……很遗憾,我没有收到Microsoftadherent(王万新)和liuhongyong(gdman)的代码,先结贴子了,我已经自己解决了,呵呵
    不过,很感谢oopboy(秋雨)给我传送了一个关于Mutex使用的例程。