- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程设计报告生产者与消费者算法的实现.
操作系统课程设计报告
生产者与消费者算法的实现
课程名称:计算机操作系统课程设计
小组成员:
班 级:
时 间:2010-10-18
目录
1 课设简介: 1
1.1课程设计题目 1
1.2课程设计小组成员 1
1.3小组成员任务分配情况及每人所占工作比例 1
2 生产者和消费者原理分析 1
3 生产者与消费者功能描述: 1
4 数据结构分析 2
5 生产者与消费者实现代码 2
6 心得体会 7
参考文献: 7
相关工具: 8
致谢: 8
1 课设简介:
1.1课程设计题目
生产者与消费者算法的实现
1.2课程设计小组成员
张洋、巢蕾、段敏
1.3小组成员任务分配情况及每人所占工作比例
张 洋 负责:分析设计消费一个产品方法和主方法并且画出流程图,后期组织组内成员成果汇总进行本组总体报告撰写。
巢 蕾 负责:分析设计生产者的行为方法和消费者的行为方法,并且画出流程图
段 敏 负责:分析设计生产产品的方法和把新生产的产品放入缓冲区,并且画出流程图。
生产者和消费者原理分析
在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。
3 生产者与消费者功能描述:
3.1生产者功能描述
在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。
3.2消费者功能描述
消费者线程从缓冲区中获得物品,然后释放缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来。
3.3程序结构图:
4 数据结构分析
生产者与消费者实现:
这其中主要是通过多线程,来实现生产者和消费者之间的协调问题。
生产者(producer)——消费者(consumer):
通过一些记录性变量,来记录模拟实现生产者的行为,通过输入语句的提示
程序采用OO设计模式,缓存区采用数组结构存储。
5 生产者与消费者实现代码
#include windows.h
#include iostream
const unsigned short SIZE_OF_BUFFER = 10; //缓冲区长度
unsigned short ProductID = 0; //产品号
unsigned short ConsumeID = 0; //将被消耗的产品号
unsigned short in = 0; //产品进缓冲区时的缓冲区下标
unsigned short out = 0; //产品出缓冲区时的缓冲区下标
int g_buffer[SIZE_OF_BUFFER]; //缓冲区是个循环队列
bool g_continue = true; //控制程序结束
HANDLE g_hMutex; //用于线程间的互斥
HANDLE g_hFullSemaphore; //当缓冲区满时迫使生产者等待
HANDLE g_hEmptySemaphore; //当缓冲区空时迫使消费者等待
DWORD WINAPI Producer(LPVOID); //生产者线程
DWORD WINAPI Consumer(LPVOID); //消费者线程
int main()
{
//创建各个互斥信号
g_hMutex = CreateMutex(NULL,FALSE,NULL);
g_hFullSemaphore = CreateSemaphore(NULL,SIZE_OF_BUFFER-1,SIZE_OF_BUFFER-1,NULL);
g_hEmptySemaphore = CreateSemaphore(NULL,0,SIZE_OF_BUFFER-1,NULL);
//调整下面的数值,可以发现,当生产者个数多于消费者个数时,
//生产速度快,生产者经常等待消费者;反之,消费者经常等待
const unsigned short PRODUCERS_COUNT = 3; //生产者的个数
const unsigned short CON
您可能关注的文档
最近下载
- 利用DEFORM-3D模拟镦粗锻造.doc VIP
- 08 威科夫进阶课程.pdf VIP
- CB 673-2020 出入舱口盖规范.pdf
- GA_T 1788.1-2021 公安视频图像信息系统安全技术要求 第1部分:通用要求.doc VIP
- 大体积混凝土监理实施细则.docx VIP
- (正式版)D-L∕T 343-2010 额定电压66kV~220kV交联聚乙烯绝缘电力电缆GIS终端安装规程.docx VIP
- 危险化学品安全管理与安全技术培训.ppt VIP
- GPS33E巨人通力调试说明书.pdf VIP
- 重大接待保障措施(环卫作业).doc VIP
- 危险物品安全航空运输技术细则(20201016014015).pdf VIP
文档评论(0)