第一范文网 - 专业文章范例文档资料分享平台

操作系统课程设计 - - 用多线程同步方法解决生产者 (2)

来源:用户分享 时间:2020-06-18 本文由偏执的傲 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

The structure of the producer process do { // 生产产品 wait (empty); wait (mutex); // 往Buffer中放入产品 signal (mutex); signal (full); } while (true); The structure of the consumer process do { wait (full); wait (mutex); // 从Buffer中取出产品 signal (mutex); signal (empty); // 消费产品 } while (true); 3 开发环境与工具 系统平台:Windows环境 实现语言:C++语言 开发工具:Vs2012 4 概要设计 4.1 数据结构设计 通过分析课程设计要求,具体设计出如下数据结构: 1. int buffer[20]={0};//定义缓冲区空间大小 2.包含数据结构pthread_t 它记录一个线程的号,主要包括下面几个函数,完成不同的功能: ThreadHandle[0]=CreateThread(NULL,0,Producer,NULL,0,&producer1); //创建一个线程。 ExitThread(0); CloseHandle(ThreadHandle[0]); //等待一个线程结束。 4.2 程序模块实现 4.2.1 生产者(Producer)模块 生产者线程向一缓冲区中写入数据,且写入缓冲区的数目不能超过缓冲区容量。当生产者产生出数据,需要将其存入缓冲区之前,首先检查缓冲区中是否有“空”存储单元,若缓冲区存储单元全部用完,则生产者必须阻塞等待,直到消费者取走一个存储单元的数据,唤醒它。若缓冲区内有“空”存储单元,生产者需要判断此时是否有别的生产者或消费者正在使用缓冲区,若是有,则阻塞等待,否则,获得缓冲区的使用权,将数据存入缓冲区,释放缓冲区的使用权,其流程图如图2所示: 生产一条数据No是否可用存储单元等待资源,阻塞Yes被唤醒No是否可用Yes存入一条数据等待使用权,阻塞被唤醒归还使用权数据单元加1,唤醒消费者 图

2 生产者流程图

//生产者线程 DWORD WINAPI Producer(LPVOID lpPara) { do{ WaitForSingleObject(empty,INFINITE); 冲区减1 WaitForSingleObject(mutex,INFINITE); 上锁 //空缓//信号量 buffer[in]=in+1; //往Buffer中放入产品 in=(in+1)%BUFFER_SIZE; //放入指针调整,为下次送出做准备 printAll(); ReleaseMutex(mutex); //信号量解锁 ReleaseSemaphore(full,1,NULL); //满缓冲区加1,即当公共资源增加时,调用函数ReleaseSemaphore()增加信号量 }while(1); }

4.2.2 消费者(Consumer)模块 消费者线程从缓冲区中读取数据,且消费者读取的数目不能超过生产者写入的数目。消费者取数据之前,首先检查缓冲区中是否存在装有数据的存储单元,若缓冲区为“空”,则阻塞等待,否则,判断缓冲区是否正在被使用,若正被使用,若正被使用,则阻塞等待,否则,获得缓冲区的使用权,进入缓冲区取数据,释放缓冲区的使用权。其执行流程如图3所示:

No是否可用存储单元等待资源,阻塞Yes被唤醒是否可用No等待使用权,阻塞Yes被唤醒取出一条数据归还使用权空缓冲区加1,唤醒一个生产者消费数据 图3 消费者流程图 //消费者线程 DWORD WINAPI Consumer(LPVOID lpPara) { do{ WaitForSingleObject(full,INFINITE); 区减1 WaitForSingleObject(mutex,INFINITE); 量上锁 //满缓冲 //信号

搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新工程科技操作系统课程设计 - - 用多线程同步方法解决生产者 (2)全文阅读和word下载服务。

操作系统课程设计 - - 用多线程同步方法解决生产者 (2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1083511.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top