#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
HANDLE hMutex[N];
int state[N]={0};/*0-思考 1-吃饭 2-等左手筷子 3-等右手筷子*/
DWORD WINAPI zhexuejia(LPVOID pvParam)
{
int id=(int)pvParam;
DWORD re;
while(1)
{
/*printf("\n哲学家%d正在思考!!\n",id);*/
state[id]=0;
Sleep(3000);
//printf("\n哲学家%d准备拿左手筷子!!\n",id);
re=WaitForSingleObject(hMutex[id],0);
if(re==WAIT_TIMEOUT)
{
//printf("\n哲学家%d等待左手筷子!!\n",id);
state[id]=2;
WaitForSingleObject(hMutex[id],INFINITE);
}
//printf("\n哲学家%d准备拿右手筷子!!\n",id);
re=WaitForSingleObject(hMutex[(id+1)%N],0);
if(re==WAIT_TIMEOUT)
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余2页未读,立即下载