操作系统(生产者与消费者问题)doc资料.docx

操作系统(生产者与消费者问题)doc资料.docx

ID:57126828

大小:52.11 KB

页数:5页

时间:2020-08-03

操作系统(生产者与消费者问题)doc资料.docx_第1页
操作系统(生产者与消费者问题)doc资料.docx_第2页
操作系统(生产者与消费者问题)doc资料.docx_第3页
操作系统(生产者与消费者问题)doc资料.docx_第4页
操作系统(生产者与消费者问题)doc资料.docx_第5页
资源描述:

《操作系统(生产者与消费者问题)doc资料.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、操作系统(生产者与消费者问题)精品文档实验二进程的互斥与同步 (生产者与消费者问题)一、实验目的:利用Windows提供的API函数,编写程序,解决生产者与消费者问题,实现进程的互斥与同步。二、实验内容与步骤:本实验要求设计并实现一个进程,该进程拥有一个生产者线程和一个消费者线程,它们使用N个不同的缓冲区(N为一个确定的数值,例如N=32)。生产者生产产品,将产品放入缓冲区,如果缓冲区满了,就不能生产产品了,等到缓冲区有空了再生产,消费者线程消费产品,从缓冲区取出产品消费,如果缓冲区是空的,就不能消费,

2、线程挂起,生产者与消费者不能同时对缓冲区操作。需要使用如下信号量:一个互斥信号量,用以阻止生产者线程和消费者线程同时操作缓冲区列表;一个信号量,当生产者线程生产出一个物品时可以用它向消费者线程发出信号;一个信号量,消费者线程释放出一个空缓冲区时可以用它向生产者线程发出信号;编写一段程序,模拟生产者和消费者线程,实现进程的互斥与同步。利用VC++6.0实现上述程序设计和调试操作,对于生产者和消费者线程操作的成功与提供一定的提示框。通过阅读和分析实验程序,熟悉进程的互斥与同步的概念。三、实验代码:#incl

3、ude#includeusingnamespacestd;constunsignedshortN=5;//定义缓冲区的大小HANDLEm_S_Empty;//生产者SemaphoreHANDLEm_S_Full;//消费者SemaphoreHANDLEm_M_Mutex;//互斥intbuffer[N];//定义共享缓冲区unsignedshortProductID=0;//产品号unsignedshortConsumeID=0;//将被消耗的产品号unsign

4、edshortin=0;//产品进缓冲区时的缓冲区下标unsignedshortout=0;//产品出缓冲区时的缓冲区下标boolflag=true;//控制程序结束DWORDWINAPIProducer(LPVOID);//生产者线程收集于网络,如有侵权请联系管理员删除精品文档DWORDWINAPIConsumer(LPVOID);//消费者线程intmain(){m_S_Empty=CreateSemaphore(NULL,N,N,NULL);//初始计数为Nm_S_Full=CreateSemap

5、hore(NULL,0,N,NULL);//初始计数为0m_M_Mutex=CreateMutex(NULL,FALSE,NULL);CreateThread(NULL,0,Producer,NULL,0,NULL);//创建生产者线程CreateThread(NULL,0,Consumer,NULL,0,NULL);//创建消费者线程while(flag){if(getchar()){//按回车后终止程序运行flag=false;}}return0;}voidProduce(){cout<<"产品生产

6、中"<<++ProductID<<"...";cout<<"生产成功"<

7、f(i==in)cout<<"<--生产";if(i==out)cout<<"<--消费";cout<

8、cout<<"<--消费";cout<

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

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

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