利用AND型信号量解决哲学家进餐问题,要windows下的C/C++的完整源代码程序.(五个哲学家五只筷子)
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/08/15 20:32:00
利用AND型信号量解决哲学家进餐问题,要windows下的C/C++的完整源代码程序.(五个哲学家五只筷子)
![利用AND型信号量解决哲学家进餐问题,要windows下的C/C++的完整源代码程序.(五个哲学家五只筷子)](/uploads/image/z/3299153-41-3.jpg?t=%E5%88%A9%E7%94%A8AND%E5%9E%8B%E4%BF%A1%E5%8F%B7%E9%87%8F%E8%A7%A3%E5%86%B3%E5%93%B2%E5%AD%A6%E5%AE%B6%E8%BF%9B%E9%A4%90%E9%97%AE%E9%A2%98%2C%E8%A6%81windows%E4%B8%8B%E7%9A%84C%2FC%2B%2B%E7%9A%84%E5%AE%8C%E6%95%B4%E6%BA%90%E4%BB%A3%E7%A0%81%E7%A8%8B%E5%BA%8F.%EF%BC%88%E4%BA%94%E4%B8%AA%E5%93%B2%E5%AD%A6%E5%AE%B6%E4%BA%94%E5%8F%AA%E7%AD%B7%E5%AD%90%EF%BC%89)
// 哲学家进餐问题
#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)这个循环拿掉
再问: 谢啦哈....
#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)这个循环拿掉
再问: 谢啦哈....