用c++实现PV操作(父亲母亲儿子女儿)
来源:互联网 发布:二次元人物制作软件 编辑:程序博客网 时间:2024/05/17 02:00
题目:桌上有一只盘子,每次只能放入1只水果。爸爸专放苹果,妈妈专放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。模拟P,V操作实现爸爸、妈妈、儿子、女儿进程的同步控制。
由于我用的是_beginthreadex函数,所以要在编译器里设置Debug Multithreaded DLL
我用的编译器是VC++ 点击project->settings->c/c++,在category下选择code generation,在use run-time liberary下选择Debug Multithreaded DLL
代码如下,自己写的,不怎么样,但肯定能跑起来
#include<string.h>
#include<stdio.h>
#include<windows.h>
#include<process.h>
LPCTSTR sp;//创建信号量ID
LPCTSTR sa;
LPCTSTR so;
HANDLE hp=CreateSemaphore(NULL,1,1,sp);//创建信号量
HANDLE ha=CreateSemaphore(NULL,0,1,sa);
HANDLE ho=CreateSemaphore(NULL,0,1,so);
UINT __stdcall father(LPVOID P)//创建程序
{
WaitForSingleObject(hp,INFINITE);//p操作
printf("父亲放了苹果\n");
Sleep(100);
ReleaseSemaphore(ha,1,NULL);//v操作
return 0;
}
UINT __stdcall mother(LPVOID P)
{
WaitForSingleObject(hp,INFINITE);
printf("母亲放了桔子\n");
Sleep(100);
ReleaseSemaphore(ho,1,NULL);
return 0;
}
UINT __stdcall son(LPVOID P)
{
WaitForSingleObject(ho,INFINITE);
printf("儿子吃了桔子\n");
Sleep(100);
ReleaseSemaphore(hp,1,NULL);
return 0;
}
UINT __stdcall daughter(LPVOID P)
{
WaitForSingleObject(ha,INFINITE);
printf("女儿吃了苹果\n");
Sleep(100);
ReleaseSemaphore(hp,1,NULL);
return 0;
}
int main(int argc, char* argv[])
{
UINT uid;
HANDLE h[10];
h[0]=(HANDLE)::_beginthreadex(NULL,0,father,NULL,0,&uid);
h[1]=(HANDLE)::_beginthreadex(NULL,0,mother,NULL,0,&uid);
h[2]=(HANDLE)::_beginthreadex(NULL,0,son,NULL,0,&uid);
h[3]=(HANDLE)::_beginthreadex(NULL,0,daughter,NULL,0,&uid);
h[4]=(HANDLE)::_beginthreadex(NULL,0,daughter,NULL,0,&uid);
h[5]=(HANDLE)::_beginthreadex(NULL,0,mother,NULL,0,&uid);
h[6]=(HANDLE)::_beginthreadex(NULL,0,mother,NULL,0,&uid);
h[7]=(HANDLE)::_beginthreadex(NULL,0,son,NULL,0,&uid);
h[8]=(HANDLE)::_beginthreadex(NULL,0,father,NULL,0,&uid);
h[9]=(HANDLE)::_beginthreadex(NULL,0,daughter,NULL,0,&uid);
Sleep(1000);
::WaitForMultipleObjects(4,h,TRUE,INFINITE);
for(int i=0;i<10;i++)
::CloseHandle(h[i]);
printf("end");
system("pause");
return 0;
}
- 用c++实现PV操作(父亲母亲儿子女儿)
- 父亲 儿子 苹果 女儿 橘子问题
- 母亲为还赌债卖掉亲儿子 父亲千里迢迢来到温州寻找儿子
- 我的父亲母亲(作者:任正非)
- 在PV操作中会有一个经典的例子就是爸爸妈妈儿子女儿吃水果问题,爸爸妈妈向盘子里放入水果,儿子女儿向盘子取水果。然而爸爸只向盘子放苹果,妈妈只向盘子放橘子,女儿只能吃苹果,儿子只能吃橘子。并且盘子里只能
- 女儿清华,儿子北大!这位父亲5个教育秘诀绝了
- 写给父亲母亲
- 愧对父亲母亲
- 我的父亲母亲
- 我的父亲母亲
- 我的父亲母亲
- 用PV操作实现多线程间同步互斥(PV)
- 用PV操作实现多线程间同步互斥(PV)
- 观后感:父亲和女儿
- 父亲与女儿
- 用pv操作实现 吃水果问题(C++语言)
- 用PV操作 实现生产者-消费者问题(C++语言)
- 儿子与女儿
- 利用Idea生成的类图分析框架源码
- UNITY 往滚动视图(Scroll View)里面添加东西并显示出来
- c#之反射
- JAVA常见字符串方法
- fiddler 4 中遇到的proxy chenged 重新捕获的问题
- 用c++实现PV操作(父亲母亲儿子女儿)
- 端口扫描shell版和python版
- VIM简要配置
- c++输入字符
- Oracle 索引的创建,删除,修改
- Python学习小笔记with语句
- 逆向微信------给微信加上控件之骰子作弊
- 图像检索
- 挑棍子