多线程生产者消费者问题.doc

多线程生产者消费者问题.doc

ID:57752889

大小:169.50 KB

页数:6页

时间:2020-09-02

多线程生产者消费者问题.doc_第1页
多线程生产者消费者问题.doc_第2页
多线程生产者消费者问题.doc_第3页
多线程生产者消费者问题.doc_第4页
多线程生产者消费者问题.doc_第5页
资源描述:

《多线程生产者消费者问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验报告专业网络工程班级08102班学号01号姓名胡双双课程名称操作系统学年2010-2011学期下课程类别 专业必修■限选□任选□实践□ 实验时间2010年11月3日实验名称实验一:生产者与消费者问题实验目的和要求全面理解生产者与消费者问题模型,掌握解决该问题的算法思想,正确使用同步机制。实验软硬件要求Pentium(R)Dual-CoreCPU1.96G内存WINDOWSXPProfessionalVisualC++6.0实验内容、方法和步骤(可附页)问题描述:一组生产者向一组消费者提供商品,共享一个有界缓冲池,生产者向其中放入商品,

2、消费者从中取得商品。假定这些生产者和消费者互相等效,只要缓冲池未满,生产者可将商品送入缓冲池;只要缓冲池未空,消费者可从缓冲池取走一商品。功能要求:根据进程同步机制,编写一个解决上述问题的程序,可显示缓冲池状态、放商品、取商品等过程。具体参数:有1个生产者进程;有1个消费者进程;缓冲区单元个数BUFFER_NUM=5;不同的生产进程可生产不同的产品,自己可任意定义,在本程序中是直接将相应生产者代号放入缓冲区,消费时将某消费者消费某生产者的信息显示出来实验结果:见截图小结从此次试验中,学到了很多关于编程的知识,以前对于编程的认识只停留在一些

3、简单的算法上,并没有系统的进行编程训练。此次的试验是以前从没接触过的多线程,中间涉及的同步及互斥问题,在设计软件及系统时,都是极其重要的。多线程实验对于我们现阶段确实有点偏难,不过,在经过请教同学及看参考书,终于自己写出了一个相对于简单一点的生产者消费者的多线程程序。评定成绩:      批阅教师:         年  月  日一、问题概述一组生产者向一组消费者提供消息,它们共享一个有界缓冲池,生产者向其中投放消息,消费者从中取得消息。假定这些生产者和消费者互相等效,只要缓冲池未满,生产者可将消息送入缓冲池;只要缓冲池未空,消费者可从缓

4、冲池取走一个消息。二、设计流程图(1)生产者流程图:阻塞为空无空缓冲区否空缓冲区是结束解锁缓冲区已满,请等待生产者生产产品放入缓冲区对缓冲区加锁(2)消费者流程图阻塞为空无满缓冲区否满缓冲区是结束解锁没有产品可消费,请等待消费者消费缓冲区内的产品对缓冲区加锁三、数据定义#defineBUFFER_NUM5//缓冲区个数intmutex[BUFFER_NUM]={0,0,0,0,0};intbuffer[BUFFER_NUM]={0,0,0,0,0};//初始化缓冲区为空HANDLEg_hMutex;//用于线程间的互斥voidshow()

5、;//函数,显示生产者及消费者过程DWORDWINAPIProducer(LPVOIDlpPara);//过程,生产者生产产品过程DWORDWINAPICustomer(LPVOIDlpPara);//过程,消费者消费产品过程四、源程序#include#include#defineBUFFER_NUM5//缓冲区个数intmutex[BUFFER_NUM]={0,0,0,0,0};intbuffer[BUFFER_NUM]={0,0,0,0,0};//初始化缓冲区为空HANDLEg_hMutex;/

6、/用于线程间的互斥voidshow(){for(inti=0;i

7、ject(g_hMutex,INFINITE);buffer[i]=1;printf("生产出一个产品,已放入第%d个缓冲区",i);show();Sleep(1000);ReleaseMutex(g_hMutex);mutex[i]=0;//解锁}break;}}if(i==BUFFER_NUM)printf("缓冲区已满,请等待");//缓冲区已满,请等待Sleep(1000);}}DWORDWINAPICustomer(LPVOIDlpPara){while(true){for(intj=0;j

8、){if(buffer[j]==1){if(mutex[j]==0){mutex[j]=1;//加锁WaitForSingleObject(g_hMutex,INFINITE);buffer[

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。