作业帮 > 综合 > 作业

利用AND型信号量解决哲学家进餐问题,要windows下的C/C++的完整源代码程序.(五个哲学家五只筷子)

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/05 10:38:34
利用AND型信号量解决哲学家进餐问题,要windows下的C/C++的完整源代码程序.(五个哲学家五只筷子)
// 哲学家进餐问题
#define WIN32_LEAN_AND_MEAN

#include
#include
#include

DWORDWINAPIPhilosoperThreadFunc(LPVOID);

#define PHILOSOPERS 5

HANDLE chop_sticks[PHILOSOPERS];
HANDLE threads[PHILOSOPERS];

intmain(int argc,char** argv)
{
for(inti=0;i
再问:   怎么我在VS2010下运行后不能停下来呢?。能帮忙改改成能停下的吗?只要5个哲学家都吃完了就行了,就停止下来吧,只要求输出他们谁想吃/正在吃/还有最后吃完了就行了。我这些确实不怎么懂帮一下忙吧,谢谢!
再答: DWORD WINAPI PhilosoperThreadFunc(LPVOID n) { int i=(int)n; HANDLE my_chop_sticks[2]; my_chop_sticks[0]=chop_sticks[i]; my_chop_sticks[1]=chop_sticks[(i-1>0)?i-1:PHILOSOPERS]; srand(GetTickCount()); //while(1){ Sleep((rand()%8)*500+500); printf("Philosopher #%d want to eat\n",i); WaitForMultipleObjects(2,my_chop_sticks,TRUE,0); printf("Philosopher #%d is eating\n",i); ReleaseMutex(my_chop_sticks[0]); ReleaseMutex(my_chop_sticks[1]); printf("Philosopher #%d finished his dinner\n",i); //} } 把while(1)这个循环拿掉
再问: 谢啦哈....