- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
山东建筑大学题 目: 生产者消费者
课 程:院 (部):专 业:班 级:学生姓名:学 号:指导教师:完成日期:课程设计任务书一 1
读者与写者问题 3
一、问题描述与基本要求 3
二、问题分析与算法描述 3
三、程序设计 4
四、源程序 5
五、测试情况 15
结 论 20
课程设计指导教师评语 22
设计题目 生产者消费者问题 指导教师 班 级 学 生 学号 : 姓名: 已知技术参数和设计要求 已知技术参数:
生产者消费者问题,描述一组生产者向一组消费者提供产品/消息。它们共享一个有界缓冲区,生产者向其中放产品/消息,消费者从中取产品/消息。只要缓冲区未满,生产者可放产品/消息,只要缓冲区有数据,消费者可取消息。即应满足下列二个同步条件:
1.只有在缓冲池中至少有一个缓冲区已存入消息后,消费者才能从中提取消息,否则消费者必须等待。
2.只有缓冲池中至少有一个缓冲区是空时,生产者才能把消息放入缓冲区,否则生产者必须等待。
设计要求:
要求设定一个缓冲池中有n个缓冲区,每个缓冲区存放一个消息,创建多个生产者,消费者,并在每个生产者消费者创建时、发出放/取产品申请时、正在放/取产品时和放/取产品结束时分别给出提示信息,并显示取/方产品前后的缓冲区状态,以检查所有处理都遵守相应的操作限制。 设计内容与步骤 设计内容:
在Windows环境下利用Windows API实现生产者消费者问题。
设计步骤:
问题的定义与分析。根据设计题目的要求,分析和理解问题。
概要设计及流程图。根据题目所涉及内容,参照所学知识,确定解决/设计方案,画出相关流程图。
问题的实现与编码。
调试与测试。根据题目内容设计测试用例,使之能够充分证明设计完成的正确性。
总结分析。 设计工作计划与进度安排 1、系统实现8学时
2、课程设计说明书2学时 设计考核要求 1、设计情况(80%)
2、考勤情况(20%) 题目 生产者消费者问题
一、问题描述与基本要求
生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。算法描述
生产者消费者问题,描述一组生产者向一组消费者提供产品/消息。它们共享一个有界缓冲区,生产者向其中放产品/消息,消费者从中取产品/消息。只要缓冲区未满,生产者可放产品/消息,只要缓冲区有数据,消费者可取消息。
这里需要解决一个生产者和消费者的同步和互斥的问题。在生产者对缓冲区进行操作的时候消费者是不能够进行操作的,同时消费者只能在缓冲区存在数据的时候进行取操作,同样生产者也只能在缓冲区不满的时候才能进行放操作,这是信号量问题。
在Windows中,常见的同步对象有:信号量(Semaphore)、互斥量(Mutex) 。使用这些对象都分为三个步骤,一是创建或者初始化;接着请求该同步对象,随即进入临界区,这一步对应于互斥量的上锁;最后释放该同步对象,这对应于互斥量的解锁。HANDLE g_hMutex;防止生产者消费者同时对缓冲区的操作,使用信号量:
HANDLE g_hFullSemaphore; //当缓冲区满时迫使生产者等待
HANDLE g_hEmptySemaphore; //当缓冲区空时迫使消费者等待DWORD WINAPI Producer(LPVOID); //生产者线程
DWORD WINAPI Consumer(LPVOID); //消费者线程 //总的线程数const unsigned short THREADS_COUNT = PRODUCERS_COUNT+CONSUMERS_COUNT;
HANDLE hThreads[PRODUCERS_COUNT]; //各线程的handle
DWORD producerID[CONSUMERS_COUNT]; //生产者线程的标识符
DWORD consumerID[THREADS_COUNT]; //消费者线程的标识符 //创建生产者线程
for (int i=0;iPRODUCERS_COUNT;++i)
{
hThreads[i] = CreateThread(NULL,0,Producer,NULL,0,producerID[i
您可能关注的文档
- 数据库课程设计报告-学籍管理系统设计.doc
- 网络课程设计--基于Linux下Samba服务器的配置.doc
- 网络与综合布线课程设计报告--东阳大厦(第1,2层)计算机网络与综合布线.doc
- 现代控制理论课程设计-大型桥式吊车行车控制系统的状态空间设计.doc
- 现代物流设施与规划课程设计-柴油机机油泵厂总平面布置设计.doc
- 应用电子技术基础课程设计-16路循环彩灯.docx
- (精简版)通信电子线路课程设计--简易振幅调制解调器的设计.doc
- 《操作系统》课程设计报告--进程调度算法,银行家算法,虚拟内存中的页面置换,磁盘调度算法.doc
- 《操作系统》综合课程设计指导--实时嵌入式 Linux系统关键技术开发.doc
- 《传感器技术》课程设计--光电式转速测量仪.doc
- 2024-2030年中国鸟类探测系统行业市场发展趋势与前景展望战略分析报告.docx
- 2024-2030年中国黄豆酱行业市场深度调研及发展趋势与投资前景研究报告.docx
- 2024-2030年中国龋病检测装置行业市场发展趋势与前景展望战略分析报告.docx
- 2024-2030年中国高纯度二羟基丙酮行业需求态势与投资趋势预测报告.docx
- 2024-2030年乳液行业市场发展分析与发展前景及投资战略研究报告.docx
- 2024-2030年书籍市场前景分析及投资策略与风险管理研究报告.docx
- 2024-2030年乳酸菌制剂市场发展分析及行业投资战略研究报告.docx
- 2024-2030年中国高炉喷煤系统行业市场发展趋势与前景展望战略分析报告.docx
- 2024-2030年中国黑臭水体治理行业发展前景预测与投资建议研究报告.docx
- 2024-2030年中国黑花岗岩行业市场发展趋势与前景展望战略分析报告.docx
文档评论(0)