- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
燕山大学课程设计说明书概要1
燕山大学课程设计说明书
课程设计名称:操作系统
多道程序缓冲区协调操作
班级:开发小组名称:
课题负责人:
课题组成员: 姓名 学号
班级 自评成绩
姓名 学号
班级 自评成绩
课题开发日期:
1 概述
1.1 课程设计目的
通过编写一个生产者消费者的实例,了解多线程的创建,运行原理,通过信号量机制的运用了解各线程间的协调工作机制;通过实现界面编程,了解MFC编程思想。
1.2 主要完成的任务
如下图所示,有个PUT操作要不断循环地向Buffer1送数据,有Move操作不断地将Buffer1的数据取到Buffer2操作不断地将Buffer数据取到,有GET操作要不断地从中取数据。PUT、 MOVE、 GET每次操作一个数据,为了在操作的过程中要保证数据不丢失, 每个Buffer每次只能接受一个PUT或一个Move或一个Get。设计一个多道程序完成上述操作。
图1 Buffer操作
Buff1,buffer中容量单位是字符。
(2)提供良好图形界面,显示Buffer的操作过程
(3) 可以Buffer的容量、PUT、GET、操作的个数;
可以PUT、GET、速度;
实时显示每个Buffer中数据的个数,Buffer的个数实时显示程序运行结束,显示汇总数据:
总的运行时间;
Buffer中数据的个数;
已放入BUFFER的数据个数;
已取的数据个数;
平均buffer中的数据个数。
MFC
MFC是Windows下程序设计的最流行的一个类库它合理的封装了WIN32 API函数,并设计了一套方便的消息映射机制。
在MFC的框架结构下,可以进行消息处理的类的头文件里面都会含有DECLARE_MESSAGE_MAP()宏,这里主要进行消息映射和消息处理函数的声明。
所有能够进行消息处理的类都是基于CCmdTarget类的,也就是说CCmdTarget类是所有可以进行消息处理类的父类。CCmdTarget类是MFC处理命令消息的基础和核心。
基本的技术路线软件的总体结构
图模块关系总体流程Mutex1信号量来协调生产者线程和MOVE1和MOVE2线程;因为MOVE1线程和MOVE2线程共同使用临界资源BUFFER1,因为MOVE1线程和消费者线程GET1共同使用临界资源BUFFER2,MOVE2线程和消费者线程GET2共同使用临界资源BUFFER2,所以用Mutex23信号量来协调MOVE1线程和消费者线程GET1,用Mutex3信号量来协调MOVE2线程和消费者线程GET2。
4 详细设计
4.1r ThreadInfo结构体
typedef stuct ThreadInfo{
CListBox *pList;
}thread,*lpthread;
此结构体用来保存在线程建立时往线程中传送的参数信息(如该线程指定的操作控件),以供在本线程中使用。
4.2 线程操作函数
4.2.1 执行函数的声明
//声明PUT线程。
DWORD WINAPI ThreadPut(LPVOID lpParameter);
//声明MOVE1线程。
DWORD WINAPI ThreadMove1(LPVOID lpParameter);
//声明MOVE2线程。
DWORD WINAPI ThreadMove2(LPVOID lpParameter);
//声明GET线程,主要区别是能分别输出该消费的字符是哪个消费者消费的。
DWORD WINAPI ThreadGet(LPVOID lpParameter);
4.2.2 各信号量的定义
Mutex = CreateMutex(NULL,false,NULL);
Mutex1 = CreateMutex(NULL,false,NULL);
Mutex2 = CreateMutex(NULL,false,NULL);
SemaphoreEmpty1=CreateSemaphore(NULL,m_buffer1,m_buffer1,NULL);
SemaphoreFULL1=CreateSemaphore(NULL,0,m_buffer1,NULL);
SemaphoreEmpty2=Cr
您可能关注的文档
最近下载
- 中国行业标准 YY 9706.274-2022医用电气设备 第2-74部分:呼吸湿化设备的基本安全和基本性能专用要求.pdf
- 中秋博饼规则.doc VIP
- (人教2024版)英语七年级上册全册语法总复习(知识点+练习) 学生版+解析版_可搜索.pdf VIP
- 机械制图课件断面图.ppt VIP
- 《中外历史纲要(下)》填空.pdf VIP
- 高中政治2024届高考复习《逻辑与思维》真题练习(选择题+主观题)(附参 .pdf VIP
- 2025年咸阳市社区工作者计划招聘412人考试备考题库及答案解析.docx VIP
- 2025-2030中国生物可吸收输尿管支架行业市场发展趋势与前景展望战略研究报告.docx VIP
- 保健品专卖店管理制度.docx VIP
- 2025年高级审计师《高级审计实务》考试题库 .pdf VIP
文档评论(0)