• 大小: 2KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: C/C++
  • 标签: C语言  

资源简介

C语言解决哲学家就餐问题

资源截图

代码片段和文件信息

//copyright software school Lijianeng   student ID:12330163
//The Dinning Philosophers Problem using win32 API 
#include 
#include 
#include 
#include 
#include 
using namespace std;
HANDLE chop[5]room;
void init() {
for(int i=0;i<5;i++) {
chop[i]=CreateSemaphore(NULL11NULL);//信号量初始化 
}
room=CreateSemaphore(NULL44NULL);
}

DWORD WINAPI dinning(LPVOID param) {
int num = *(int*)param;
while(1) {
srand(time(0));
if(rand()%2) {
printf(“%d号哲学家决定吃饭\n“num+1);
WaitForSingleobject(roomINFINITE);
WaitForSingleobject(chop[num]INFINITE); //按照题意需要等到有空余的筷子才吃饭 
printf(“%d号哲学家拿起了左边的%d号筷子\n“num+1num+1);//critical section
WaitForSingleobject(chop[(num+1)%5]INFINITE);
printf(“%d号哲学家拿起了右边的

评论

共有 条评论