哲学家就餐问题(整理)的几个总结WaitForSingleObject(mutex, INFINITE); cout << "philosopher " << myid << " begin......" << endl; ReleaseMutex(mutex); //初始状态为THINKING mystate = THINKING; leftFork = (myid) % PHILOSOPHER_NUM; rightFork = (myid + 1) % PHILOSOPHER_NUM; while (true) { switch(mystate) { case THINKING: // 改变状态 mystate = HUNGRY; strcpy(stateStr, "HUNGRY"); break; case HUNGRY: strcpy(stateStr, "HUNGRY"); // 先检查左筷子是否可用 ret = WaitForSingleObject(semaphore[leftFork], 0); if (ret == WAIT_OBJECT_0) { //左筷子可用就拿起,再检查右筷子是否可用 ret = WaitForSingleObject(semaphore[rightFork], 0); } break; case DINING: // 吃完后把两支筷子都放下 ReleaseSemaphore(semaphore[leftFork], 1, NULL); ReleaseSemaphore(semaphore[rightFork], 1, NULL); // 改变自己的状态 mystate = THINKING; strcpy(stateStr, "THINKING"); break; } // 输出状态 WaitForSingleObject(mutex, INFINITE); cout << "philosopher " << myid << " is : " << stateStr << endl; ReleaseMutex(mutex);
2022-04-22 19:12:42 1.57MB 哲学家 就餐
1
gcc,典型同步问题,哲学家问题,消费者问题,读者写者问题
2022-04-12 20:00:30 4KB 操作系统
1
在ucos2操作系统下,解决互锁问题。即公共资源的分配问题。
2022-04-10 20:39:42 135KB 互锁 ucos2
1
分析哲学家进餐问题,p,v操作实现互斥与同步,分析记录性信号量的不足,并指出给改进方法,方法一:最多允许4人同时进餐;方法二:分奇偶数进餐,以及AND型信号量解决该问题。
2022-04-06 00:35:41 3.18MB 操作系统
1
Python tkinter 多线程 哲学家进餐问题 网上找了好久都没有自己满意的代码,于是自己学了一个,不过这只是个雏形,要想变成你满意的程序,需要靓男靓女们自己的努力啦! 废话不多说,直接上代码! from tkinter import * from PIL import Image,ImageTk import threading from time import sleep import os, random """首先导入必要的模块,由于涉及到导入非gif的图片文件,就要用到PIL库""" """接下来开始写哲学家这个类""" class Philosopher(threading.
2022-04-03 19:36:53 221KB IN int inter
1
餐饮哲学家:我对OS课的介绍| 主题:餐饮哲学家的模拟
1
模拟操作系统中哲学家就餐问题,是java编写的图形界面
2021-12-25 08:12:03 120KB java 哲学家问题
1
操作系统课程设计:哲学家进餐问题的模拟实现,包括源代码、可执行的工程
2021-12-24 22:22:48 6.81MB 操作系统
1
  设有5个哲学家,共享一张放油把椅子的桌子,每人分得一吧椅子.但是桌子上总共执友支筷子,在每个人两边分开各放一支.哲学家只有在肚子饥饿时才试图分两次从两边拾起筷子就餐.
2021-12-24 20:07:04 4KB C语言
1
c++编程 mfc界面 操作系统 可以成功运行及测试
2021-12-23 22:38:22 408KB 哲学家进餐 c++
1