哲学家就餐问题(整理)

上传者: w4631248 | 上传时间: 2022-04-22 19:12:42 | 文件大小: 1.57MB | 文件类型: PDF
哲学家就餐问题(整理)的几个总结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);

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明