2020年新版缓冲池模拟与实现.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
长春理工大学大学学生实验报告书 学生用表 实验名称 长春理工大学大学学生实验报告书 学生用表 实验名称 软件工程班级缓冲池的模拟实现 软件工程班级 课程名称 操作系统 课程号 学院(系)软件学院 专业 学生姓名 学号 实验地点 实验日期 一、实验目的 1 掌握缓冲池的结构 2 掌握缓冲池的使用方法 二、实验内容1、实现输入、计算、输出进程并发执行 2、实现getBuf和putBuf函数。 三个队列的链表设计 还有三、实验步骤1、整体设计 包括三个线程的模拟设计 三个队列的链表设计 还有 三个 队列的同步与互斥的设计等 2、由于本次实验没有需要太多的数据结构 因此数据结构的设计就只有 三个缓冲队列的设计 先构造一个空的缓冲队列 该队列是一个实体 即是一个 三个缓冲队列的设计 先构造一个空的缓冲队列 该队列是一个实体 即是一个 确定的有结点的链表 它是模拟缓冲池的载体 输入与输出队列在构造时只有它 的头尾指针而没有它的实体 这是因为它可以从空缓冲区里获得 例如当计 算线程要数据计算时 便可从空队列里获取一个缓冲区 作为输入缓冲使用再把 它挂载到输入队列的队尾中去 算法流程图 实验内容如下 //缓冲队列类型的定义 #defi ne EMQ 0 // 空缓冲队列 #defi ne INQ 1 // 输入缓冲队列 #defi ne OUTQ 2 // 输出缓冲队列 const int bufferpoolsize = 50; ////缓冲池大小 const int bufferpoolsize = 50; //// 缓冲池大小,默认设置为50个 //结束运行标志 short int m_end ; GDOU -B-11-112 //缓冲结构体的定义 typedef struct Buffer int BufNo; // 缓冲区号 int buf; // 缓冲内容 Buffer *n ext; // 缓冲指向下一个指针 } buffer; //线程函数声明 DWORD WINAPI In putThreadFu nc(LPVOID IpPa ra); // 输入线程函数 DWORD WINAPI OutputThreadFu nc(LPVOID lpPa ra); // 输出线程函数 DWORD WINAPI CalThreadFu nc(LPVOID lpPa ra); // 计算线程函数 //力口入与摘取队列函数声明 挂载到队列尾void putBuf(i nt type , buffer *buf); // 挂载到队列尾 buffer* getBuf(i nt type); // 从队列头中摘取一个缓冲区 //构造缓冲池函数的声明 void Con structBuffer(); //线程的句柄 HANDLE hl nputT; // 输入线程 HANDLE hOutputT; // 输出线程 HANDLE hCalculateT; // 计算线程 //线程的ID DWORD In putTid; // 输入线程 DWORD OutputTid; // 输出线程 DWORD CalculateTid; // 计算线程 //三个互斥量信号句柄 HANDLE hmutexEMQ; //空队列的互斥信 号量 HANDLE hmutexOUTQ; //装满输出队列的互斥信号量 HANDLE hmutexINQ; //装满输入队列的互斥信号量 //三个同步信号量 HANDLE hsemINQ; HANDLE hsemOUTQ; HANDLE hsemEMQ; #i nclude win dows.h #i nclude iostream #in clude stdlib.h #include time.h #in clude Mai n1.h using n amespace std; //三个缓冲队列头与尾指针 buffer *hemq , *hi nq , *houtq; // 队头指针 buffer *lemq , *li nq , *loutq; // 队尾指针 //主函数 int mai n() { coutvvshowlvve ndlvvshow2vve ndlvshow3ve ndl?e ndl; m_end = 1 ; // 运行结束标志 Con structBuffer(); // 构造缓冲池 //创建互斥对象 hmutexEMQ = CreateMutex(NULL,FALSE,NULL); hmutexOUTQ = CreateMutex(NULL,FALSE,NULL); hmutexINQ = CreateMutex(NULL,FALSE,NULL); //创建信号量对象 hsemINQ = CreateSemaph

文档评论(0)

laugh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档