欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年操作系统实验--多线程同步 .pdf

    • 资源ID:39898979       资源大小:80.69KB        全文页数:4页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年操作系统实验--多线程同步 .pdf

    一、实验目的和内容1、实验目的在掌握基于消息的windows 程序结构和多线程程序设计方法的基础上,设计一个多线程同步的程序。使学生能够从程序设计的角度了解多线程程序设计的方法和在windows 系统下多线程同步互斥的机制。2、实验内容理解 Windows 程序设计的基本思想,理解基于消息的程序设计方法,能够设计出简单的基于事件的windows 程序,完成基本控件的使用结合操作系统中信号量与互斥体的概念,在MFC 中找到对应的相关类。设计一个多线程同步的程序。二、实验方案1、定义相关的信息,创建生产者和消费者线程。设定生产和消费的规则,初步设定没生产两个产品就将其中一个取出消费。2、设定一个循环队列,作为缓冲区,设计生产者消费者算法。3、使用互斥的思路,当缓冲区满时迫使生产者等待,当缓冲区空时迫使消费者等待。4、源代码#include#include using namespace std;unsigned short ProductID=0,ConsumeID=0,in=0,out=0;const unsigned short SIZE_OF_BUFFER=10;/缓冲区长度int g_bufferSIZE_OF_BUFFER;/缓冲区是个循环队列bool g_continue=true;/控制程序结束HANDLE g_hMutex;/用于线程间的互斥HANDLE g_hFullSemaphore;HANDLE g_hEmptySemaphore;DWORD WINAPI Producer(LPVOID);/生产者线程DWORD WINAPI Consumer(LPVOID);/消费者线程const unsigned short PRODUCERS_COUNT=2;/生产者的个数const unsigned short CONSUMERS_COUNT=1;/消费者的个数const unsigned short THREADS_COUNT=PRODUCERS_COUNT+CONSUMERS_COUNT;HANDLE hThreadsPRODUCERS_COUNT;/各线程的 handle DWORD producerIDCONSUMERS_COUNT;/生产者线程的标识符DWORD consumerIDTHREADS_COUNT;/消费者线程的标识符名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -void Produce()cout 正在生产第 +ProductID 号产品 ;cout 生产成功 endl;void Append()cout 存放新产品 ;g_bufferin=ProductID;in=(in+1)%SIZE_OF_BUFFER;cout 成功 endl;cout缓冲区情况 endl;for(int i=0;iSIZE_OF_BUFFER;+i)cout i:g_bufferi;if(i=in)cout -生产;if(i=out)cout -消费;cout endl;coutendl;void Take()cout 取出一个产品 ;ConsumeID=g_bufferout;out=(out+1)%SIZE_OF_BUFFER;cout 成功 endl;for(int i=0;iSIZE_OF_BUFFER;+i)cout i:g_bufferi;if(i=in)cout -生产;if(i=out)cout -消费;cout endl;coutendl;void Consume()cout 消费第 ConsumeID 号产品;cout 成功 endl;DWORD WINAPI Producer(LPVOID lpPara)while(g_continue)WaitForSingleObject(g_hFullSemaphore,INFINITE);WaitForSingleObject(g_hMutex,INFINITE);Produce();名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 4 页 -Append();Sleep(1500);ReleaseMutex(g_hMutex);ReleaseSemaphore(g_hEmptySemaphore,1,NULL);return 0;DWORD WINAPI Consumer(LPVOID lpPara)while(g_continue)WaitForSingleObject(g_hEmptySemaphore,INFINITE);WaitForSingleObject(g_hMutex,INFINITE);Take();Consume();Sleep(2000);ReleaseMutex(g_hMutex);ReleaseSemaphore(g_hFullSemaphore,1,NULL);return 0;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);/创建生产者线程 for(int i=0;iPRODUCERS_COUNT;+i)hThreadsi=CreateThread(NULL,0,Producer,NULL,0,&producerIDi);if(hThreadsi=NULL)return-1;/创建消费者线程for(i=0;iCONSUMERS_COUNT;+i)hThreadsPRODUCERS_COUNT+i=CreateThread(NULL,0,Consumer,NULL,0,&consumerIDi);if(hThreadsi=NULL)return-1;while(g_continue)if(getchar()g_continue=false;/按回车后终止程序运行 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 4 页 -return 0;三、实验数据、结果分析运行结果四、总结名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 4 页 -

    注意事项

    本文(2022年操作系统实验--多线程同步 .pdf)为本站会员(H****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开