版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验3报告源程序1/ * *作者:wwj时间:2012/4/12功能:实现吃水果问题*水趣目内容:桌子有一只盘子,只允许放一个水果,父亲专向盘子放苹果,母亲专向盘子 放桔子儿子专等吃盘子的桔子,女儿专等吃盘子的苹果。只要盘子为空,父亲或母亲就可以 向盘子放水果,仅当盘子有自己需要的水果时,儿子和女儿可从盘子取出。请给出四个人之 间的同步关系,并用pv操作实现四个人的正确活动的问题。*水*题目分析:父亲和女儿是相互制约的,父亲进程执行完即往盘中放入苹果后.女儿进程才 能执行即吃苹果,是同步关系:母亲和儿子是相互制约的,母亲进程执行完即往盘中放入桔子,儿子进程才能执行即吃桔子, 也是同步关系而父亲
2、和母亲这两个进程不能同时进行,是互斥关系;*# i n c I u d ewindow s h># inc I u de< iostreamus i ng nam e space std;/声明句柄H A NDL E Em p tyP I ate;HAN DLE Apple;H A NDLE o r a n ge:H ANDL E fatherThre a d;HA N DL E mot h erTh r ead:HANDLE s onT h r e ad:HANDL E da u ghter T h r e ad;/线程函数声明DWORD Wl N API father (L P
3、VOID I pParame ter);DWORD V/1 NAP I moth e r (LPVOI D Ip P arameter);DWORD WI N API da u g h te r (L PVOID I p P a r amet e r);DWORD V/1 NAP I son (LPVO ID I p P a ram e ter):i n t m a i n ()/创建信号量EmptyPla te = C reat e Semap h o re (NULL, 1, 1 , NULL): / / 盘子Apple = Crea t e S emap h ore (NULL, 0,
4、1, NULL):/苹果a oran g e = CreateSema p h ore (NULL. 0, 1, NULL) ; /桔子o /创建线程fatherThread = C r ea te Thread (NULL, 0, fat her, NULL, 0, NULL); mot herTh read = Crea t eThread (NULL, 0, mother, NULL , 0, NU L L );d a ug h terTh r e ad = Crea te Thread (NULL, 0, daugh ter, NULL, O , NULL); sonTh r e a
5、d = CreateThr e ad (N ULLt 0, s o n , NULL , 0, NULL ):。/等线程的结束W a it Fo r Sin g leOb j e c t (fa the rTh r ead, INF I N ITE);a WaitF o r S ingleObj e ct (mo t he r Thre ad, I NFI N I TE);a Wait F orSing I eO b ject (da u ghterThre ad, INFIN ITE):a WaitForSing I e Object (sonT h r e ad, INF I NITE);
6、o /关闭线程句柄CloseHandle (fatherThread);a C loseHandle(m o t h erThread);a Cl o seH a nd I e (da u g h t e rTh read);。Clos e Handle(sonThre ad);/关闭信号量句柄a Clos e Han d le(EmptyPlate):CloseHandI e ( Apple):C I o seHand I e (ora n g e ):ore t urn O ;/父亲线程函数 DW0R D W I NAP I father (LPVOID I p Param e ter)0
7、 for (in t i =0; i 5; + i ) 。Wai t Fo r S ing I e 0bject ( E mptyPla t e, I NFI N I TE) ;。/ / P 操作o /开始临界区c o unFat her 往盘中放一个水果n"/结束临界区Re I e a s e Sem a phore (Apple, 1, NULL);。/ / V 操作o o a n re t ur n O :。/母亲线程函数0 DW0R D WIN API mot h er (LP V0 I D IpP a rmeter) a for (inti = 0; i 5;+i) a W
8、ai tFoS in g I e Obje c t (Emp ty P late, I NFINITE) / P 操作 o /开始临界区0 cout <<” nMo t he r往盘中放一个桔子 n H :/结束临界区R e I easeSemaph ore (or a nge, 1, NULL):。/ / V 操作。re t ur n 0;/女儿线程函数a DWORD W I NAP I daughter (LPVOID IpParam e ter)a whi I e (1)。 a V/a i tForSingl e Object (App I e, I NFINI TE): /
9、 / p 操作o cout«”女儿吃苹果M «endI;R e lea s eSemaph o re (Empty P I ate, 1, NULL) :/v 扌桑作。r e tu r n 0:0 /儿子线程函数DV/OR D WI NAP I s o n (L P VOID I pP a r a m e ter)。a whiI e ( 1 )。a a WaitFo r S in g leOb je c t (ora nge, INFINITE) ; /p 操作a o co u tV<"儿子吃苹果"V (endI:。Releases ema p h
10、 ore ( E mpty P lat e , 1, NULL) ; / / v 操作。o r eturn 0;程序运行结果截图:运行结果分析:从运行结果可知父进程执行完后,女儿进程立即执行,这说明父进程跟女儿 进程有时序关系,只有当父进程执行之后,女儿进程才会执行,女儿进程是父进程的子线程, 他们具有同步关系,同理;母亲进程跟儿子进程,也是同步关系。源程序2/* *作者:wwj吋间:2012/4/12功能:实现生产者和消费者正常活动 题目内容:生产者-消费者问题,是指两组进程共享一个环形的缓冲区。一组进程被称为生产 者,另一组进程被称为消费者。缓冲池是由若干个(程序假设为4个)大小相等的缓冲
11、区纽成的,每个缓冲区可以容纳一个 产品。生产者进程不断地将生产的产品放入缓冲池,消便者进程不断地将产品从缓冲池取出。用PV操作实现生产者和消费者的正常活动的程序题目分析:在生产者-消费者问題中,既存在进程同步问題,也存在着临界区的互斥问题.当缓冲区 都满时,表示供大于求,生产者停止生产,进入等待状态,同时唤醒消费者;当缓冲区都空时,表示供不应求,消费者 停止消费,唤醒生产者。这说明了,生产者和消费者存在同步关系.对于缓冲池,它显然是一个临界资源,所有的生产者和消费者都要使用它,而且都要改变它的状态,故对于缓冲池的操作必须是互斥的。*/# i nc I ud e <W i nd o ws.
12、 h># i n c lude< i o st ream)u sing n a mesp ace std:con s t int n=4;/声明全局变量i pit i二0, j=0;/i和j分别指向缓冲区int b u ffer n;/缓冲池int ItemP二0;。/用来存放生产的产品int I temC=0;。/用来存放消费的产品/声明句柄HANDLE mut ex;。/缓冲池信号量HANDLE emp ty; /空缓冲区信号量HANDLE full;。/满缓冲区信号量H ANDLE pTh r ead:。/ / p roducer 线程句柄HANDLE cThread; /
13、/ c onsumer 线程句柄/声明进程函数DWORD W I NAPI pr o d ucer ( LPV O I D I pPa r ame ter);DWO R D WI NAP I c onsumer (LPVO I D I pPa r amet er);int ma in ()/创建信号量mutex = Create Semaphore (NULL f 1,1 , NULL):empty = C r e ateSema ph ore (NULL, 1 f 4, NULL);o ful I = C r e a t eS emaphore(NULL, 0, 4, NULL):c ou
14、t"市场运作开始。"e ndl:O /创建线程pThread = C r e a teThread (NULL, O,pr o ducer,NULL,0, NULL):c T h r e ad = C r e ate Thread (NULL, 0, c o n s umer, NULL,。,NULL):O /等待相应线程结束a WaitFo r SingleObject ( p Th r ead, INF I NITE);Wa i t F o r S i n gleObje c t (cThre ad, INF IN I TE);oo /关闭线程句柄Cl o seH a
15、ndle (pThread);a C I o s eHand I e (cT h read): /关闭信号量句柄 C I os e Ha n die (mut ex):a Cl o seHandle (empty);Cl o s eH a nd I e (f u I I ):a cout"整个市场运营结束.o o o M «end I;ret ur n 0;/pr o d ucer线程函数的定狡DV/ORD WIN A P I p r od u cer ( L PVO I D IpPar ame ter)。a for (int k 二0;k5; k+)a co u t<
16、;<v np r odu cer 生产一个产品"V < e nd I;It emP = ltemP+ 1 ;° /增加一个产品。V/aitForSing leO b ject (empty, INF I NITE): /P 操作a 。Wait F o rS in gl e 0 b j ect (mutex, I NFI N I TE ):ocout"n把一个产品放入了一个空的缓冲区M«endl;。buffer i= I t emP;d/將产品放入缓冲区000 i = (i+1)%n:a a。aRelea s eSemaphore (mutex
17、, 1, NULL ):。/V 操作a o Re leas e Sema p h or e (fu I 1,1, NULL); ret urn 0;a DW ORD Wl NAP I c onsu m e r (LPVO I D IpP a r am e ter)。f or (int k=0; k < 5 : k+)。oWait ForS i n gl e Ob j ec t (full, INFINITE);。/P 操作o。W a i tF o r S ing I e 0 b ject (mutex, I NF IN I T E ):。ItemC= buffer j :。/将缓冲区里的产品取出,放入消费产品里头o j = (j+1) % n;°。/j指向下一个满的缓冲区a。 Re I e a s e Semaphore (mut e x, 1 , NULL):。/V 操作a 。Re Iea s eSema p hor e (empt y , 1, N U LL);o 。cou t<” n消费者消费一个产品M < <endl;a “ It emC=ltemC-1:。/消费一个产品a。ret urn 0;程序运行截图如下:运行结果分析:从运行结果来看,整个市场运作有两种状态,一种状态是生产着
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年生物天然气提纯工艺及并入管网技术规范
- 2026年动力电池回收国际标准碎片化与中国方案输出路径
- 2026年广州市白云区初三教学质量监测(一)生物试题理试卷含解析
- 2026年科学用药施肥增效项目生物农药补助申报表模板
- 2026年四川省泸州泸县重点达标名校中考5月模拟考试生物试题试卷含解析
- 河南省鹤壁市、淇县重点达标名校2025-2026学年初三下学期统一考试化学试题理试题含解析
- 福建省晋江市潘径中学2026年中考生物试题全真模拟演练含解析
- 山东省滕州市洪绪中学2025-2026学年初三4月摸底考试化学试题试卷含解析
- 广东惠城区重点达标名校2025-2026学年初三下学期返校联考生物试题含解析
- 2026年智算中心建设周期投资回收期与经济产出测算模型
- DB46∕T 626-2024 黎家宴服务规范
- 51testing:2024年软件测试行业现状调查报告
- 2025年中国带状疱疹防治指南
- 灌排渠道设计规范
- 扬州大学广陵学院《遗传学》2025-2026学年期末试卷(A卷)含答案
- 我心中的老师班会课件
- 低空经济试题及答案
- 养老院安全生产教育培训内容
- 设备设施停用管理制度
- 山东高考英语语法单选题100道及答案
- 职业道德与法治知识点总结中职高教版
评论
0/150
提交评论