哲學家就餐問題

2021-07-01 23:27:30 字數 1559 閱讀 2189

#pragma once 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include "stdafx.h"

handle chopstick[5],room;

lpcritical_section cs;

const glfloat pi = 3.1415926536f;

const glfloat r = 10.0f;

//五個中心的座標

const glfloat x[5] = ;

const glfloat y[5] = ;

//代表5個哲學家的狀態,0表示思考,1表示吃飯,2表示等待

int state[5] = ;

void initchopstick()

room = createsemaphore(null, 4, 4, text("room"));

}int srandnum()

void think(int i)

void eat(int i)

void philosopher(pvoid p)

}// 函式renderscene用於在視窗中繪製需要的圖形

void renderscene(void)

else

if (state[i] == 1)

else

if (state[i] == 0)

glrectf(x[i] - r, y[i] - r, x[i] + r, y[i] + r);

}//清空命令緩衝區並交換幀快取

glutswapbuffers();

}// 函式changesize是視窗大小改變時呼叫的登記函式

void changesize(glsizei w, glsizei h)

void timerfunction(int value)

void setuprc(void)

int _tmain(int argc, _tchar* argv)

glutinitdisplaymode(glut_rgb |glut_double);

glutinitwindowsize(800, 800);

glutcreatewindow("draw");

glutdisplayfunc(renderscene);

glutreshapefunc(changesize);

gluttimerfunc(33, timerfunction, 1);

setuprc();

glutmainloop();

sleep(infinite);

deletecriticalsection(cs);

return

0; }

哲學家就餐問題

本文是哲學家就餐問題在 linux 上的程式實現,與windows 平台的實現類似,程式上稍有不同。philosopherdining.cpp include include include include include include rasutil.h using namespace std ...

哲學家就餐問題

假設有五位哲學家圍坐在一張圓形餐桌旁,做以下兩件事情之一 吃飯,或者思考。吃東西的時候,他們就停止思考,思考的時候也停止吃東西。餐桌中間有一大碗義大利面,每兩個哲學家之間有乙隻餐叉。因為用乙隻餐叉很難吃到義大利面,所以假設哲學家必須用兩隻餐叉吃東西。他們只能使用自己左右手邊的那兩隻餐叉。哲學家就餐問...

哲學家就餐問題

問題描述 哲學家就餐 c c 語言 author erice s binbin erices 163.com date 2017 10 21 include include include include define max 5 五個哲學家 define left i max 1 max 佇列處理...