父亲 儿子 苹果 女儿 橘子问题
来源:互联网 发布:pageadmin cms 公司 编辑:程序博客网 时间:2024/05/17 02:04
#include "stdafx.h"#include<iostream>#include<Windows.h>#include<process.h>#include<time.h>using namespace std;HANDLE Orange=0;HANDLE Apple=0;HANDLE Empty=0;int gCount=0;bool Mark=false;DWORD son(LPVOID lm){while(gCount<12){::WaitForSingleObject(Apple,1000);if(Mark)cout<<"儿子吃了一个苹果\n";Mark=false;::ReleaseSemaphore(Empty,1,NULL);}return 0;}DWORD Daughter(LPVOID lm){while(gCount<12){::WaitForSingleObject(Orange,1000);if(Mark)cout<<"女儿吃了一个橘子\n";Mark=false;::ReleaseSemaphore(Empty,1,NULL);}return 0;}DWORD father(LPVOID lm){while(gCount<12){::WaitForSingleObject(Empty,INFINITE);gCount++;int a=::rand()%100;Mark=true;if(a<50){::ReleaseSemaphore(Orange,1,NULL);cout<<"父亲放入了一个橘子\n";}else{::ReleaseSemaphore(Apple,1,NULL);cout<<"父亲放入了一个苹果\n";}}return 0;}int main(){::srand(NULL);Orange=::CreateSemaphoreA(NULL,0,1,NULL);Apple=::CreateSemaphoreA(NULL,0,1,NULL);Empty=::CreateSemaphoreA(NULL,1,1,NULL);HANDLE hThread[3]={0};hThread[0]=::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)son,NULL,0,NULL);hThread[1]=::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)father,NULL,0,NULL);hThread[2]=::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Daughter,NULL,0,NULL);::WaitForMultipleObjects(3,hThread,true,INFINITE);for(int i=0;i<3;i++){::CloseHandle(hThread[i]);}::CloseHandle(Orange);::CloseHandle(Apple);::CloseHandle(Empty);}题目:父亲有苹果橘子共12个盘子一个,儿子只吃苹果,女儿只吃橘子,那么使用三个信号量表示这次事件,是否有橘子Orange 是否有苹果Apple 盘子是否是空的Empty,同时还有一个Mark,用于标记盘子里是否有东西,我们默认等待时间是1秒,一旦放入了东西,那么就是TRUE,没放就是FALSE,这样的话,儿子女儿线程就可以鉴别是时间到了,还是放入东西来进行不同的处理。
0 0
- 父亲 儿子 苹果 女儿 橘子问题
- 在PV操作中会有一个经典的例子就是爸爸妈妈儿子女儿吃水果问题,爸爸妈妈向盘子里放入水果,儿子女儿向盘子取水果。然而爸爸只向盘子放苹果,妈妈只向盘子放橘子,女儿只能吃苹果,儿子只能吃橘子。并且盘子里只能
- 生产者消费者之爸爸妈妈儿子女儿苹果橘子编程实现
- 生产者消费者之爸爸妈妈儿子女儿苹果橘子编程实现
- java同步和互斥的应用:生产者消费者之爸爸妈妈儿子女儿苹果橘子编程实现
- 用c++实现PV操作(父亲母亲儿子女儿)
- 生产者与消费者之苹果橘子问题
- 桌子上有一个盘子,每次只能放一个水果.爸爸专门向盘子里放苹果,妈妈专门向盘子里放橘子,一个儿子专门等吃盘子中的橘子,一个女儿专门等吃盘子中的苹果.用信号量实现他们间的同步机制.
- 女儿清华,儿子北大!这位父亲5个教育秘诀绝了
- 观后感:父亲和女儿
- 父亲与女儿
- 儿子与女儿
- 苹果橘子经济社会学
- 苹果香蕉橘子梨
- 再议【苹果、橘子】
- 多线程模拟-爸爸放橙子给女儿吃,妈妈放苹果给儿子吃
- 儿子需要这样的父亲
- 父亲给儿子的一封信
- eclipse指定-vm 运行时,有时会出现命令窗口的原因
- 黑马程序员——————一、Java异常的基础知识
- 基于计算机资源分析Hadoop的默认Counter
- 校园网破解教程
- Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)
- 父亲 儿子 苹果 女儿 橘子问题
- js关于时间常用的方法.
- 黑马程序员——协议
- 开区间和闭区间
- 《数据结构》第七章 查找技术 知识结构导图——信管113309
- 单击li标签并改变其背景样式及获得li标签的id
- The server failed to respond with a valid HTTP response
- restful webservice实战
- android SQLite使用SQLiteOpenHelper类对数据库进行操作