版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验 2: 线程同步一、实验目的(1) 掌握 Windows2000环境下,线程同步。( 2) 熟悉 Windows2000 提供的线程同步与互斥 API。( 3) 用 Windows2000 提 供 的 线 程 同 步 与 互 斥 API 解 决 实 际 问 题(producer-consumer)。二、实验内容生产者与消费者问题的实现。在 Windows 2000 环境下,创建一组“生 产者”线程和一组“消费者”线程,并建立一个长度为 N 的全局数组作为共 享缓冲区。“生产者”向缓冲区输入数据, “消费者”从缓冲区读出数据。当 缓冲区满时,“生产者”必须阻塞,等待“消费者”取走缓冲区数据后
2、将其 唤醒。当缓冲区空时, “消费者”阻塞,等待“生产者”生产了产品后将其 唤醒。试用信号量实现“生产者”与“消费者”线程之间的同步。三、实验环境( 1 ) 使用的操作系统及版本。Windows xp professional( 2) 使用的编译系统及版本。Visual c+ 6.0四、实验步骤1 等待一个对象 ( 相当于 p 操作 )WaitForSingleObject 用于等待一个对象。它等待的对象可以为:Change notification :变化通知。Console input :控制台输入。Event :事件。Job:作业。Mutex:互斥信号量。Process :进程。Sema
3、phore计数信号量。Thread:线程。Waitable timer :定时器。返回值:如果成功返回,其返回值说明是何种事件导致函数返回访问描述WAIT_ABANDONED等待的对象是一个互斥(mutex)对象,该互斥对 象没有被拥有它的线程释放,它被设置为不能被唤 醒。WAIT_OBJECT_0指定对象被唤醒。WAIT TIMEOUT超时。2 创建信号量CreateSem aphore用于创建一个信号量。返回值:信号量创建成功,将返回该信号量的句柄。如果给出的信号量名是系统已经存在 的信号量,将返回这个已存在信号量的句柄。如果失败,系统返回NULL可以调用函数GetLastError查询失
4、败的原因。3. 打开信号量Ope nSemaphor用 于打开一个信号量。返回值:信号量打开成功,将返回该信号量的句柄。如果失败,系统返回NULL可以调用函数GetLastError查询失败的原因。4. 增加信号量的值ReleaseSem aphore用于增加信号量的值。返回值:如果成功,将返回一个非0值。如果失败,系统返回0,可以调用函数GetLastError 查询失败的原因。方法一:程序代码:#i ncludevwi ndows.h> #i nclude<iostream.h> static HANDLE S1,S2;static HANDLE hMutex;void
5、producer(int n)for(int i=1;i<=3;i+)WaitForSingleObject(S1,INFINITE);WaitForSingleObject(hMutex,INFINITE);coutvv"生产者"<<nvv" 第"vvivv"次生产产品"<<endl;ReleaseMutex(hMutex);ReleaseSemaphore(S2,1,NULL);void consumer(int n)for(int i=1;i<=3;i+)WaitForSingleObject
6、(S2,INFINITE);WaitForSingleObject(hMutex,INFINITE);coutvv"消费者"<<n<<" 第"vvivv"次消费产品"<<endl;ReleaseMutex(hMutex);ReleaseSemaphore(S1,1,NULL);void main(void)static HANDLE hHandle1,hHandle2,hHandle3,hHandle4;DWORD dwID1,dwID2,dwID3,dwID4;S1=CreateSemaphore
7、(NULL,1,1,"Semphore1");S2=CreateSemaphore(NULL,0,1,"Semphore2");hMutex=CreateMutex(NULL,FALSE,NULL);hHandle1=CreateThread(LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_STA RT_ROUTINE)producer,(LPVOID)1,0,&dwID1);hHandle3=CreateThread(LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_STA RT_ROU
8、TINE)consumer,(LPVOID)1,0,&dwID3);hHandle2=CreateThread(LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_STA RT_ROUTINE)producer,(LPVOID)2,0,&dwID2);hHandle4=CreateThread(LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_STA RT_ROUTINE)consumer,(LPVOID)2,0,&dwID4);Sleep(1000);5初始化临界区InitializeCriticalSection
9、 用于初始化临界区对象。返回值:以下两个 api 相当于 pv 源语操作6进入临界区EnterCriticalSection 等待进入临界区的权限,当获得该权限后进入临界区。 返回值:该函数没有返回值。7退出临界区LeaveCriticalSection 释放临界区的使用权限。返回值: 该函数没有返回值。方法二:程序源代码:#include<windows.h>#include<iostream.h>static HANDLE S1,S2;/ 定义两个信号量 S1 空间CRITICAL_SECTION CS; / 定义一个临界区void producer(int n)f
10、or(int i=1;i<=3;i+)WaitForSingleObject(S1,INFINITE);EnterCriticalSection(&CS);coutvv"生产者"<<nvv" 第"vvivv"次生产产品"<<endl;LeaveCriticalSection(&CS);ReleaseSemaphore(S2,1,NULL);void consumer(int n)for(int i=1;i<=3;i+)WaitForSingleObject(S2,INFINITE);
11、EnterCriticalSection(&CS);coutvv"消费者"<<n<<" 第"vvivv"次消费产品"<<endl;LeaveCriticalSection(&CS);ReleaseSemaphore(S1,1,NULL);void main(void)static HANDLE hHandle1,hHandle2,hHandle3,hHandle4;DWORD dwID1,dwID2,dwID3,dwID4;S1=CreateSemaphore(NULL,1,1,&q
12、uot;Semphore1");S2=CreateSemaphore(NULL,0,1,"Semphore2");InitializeCriticalSection(&CS);hHandle1=CreateThread(LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_STA RT_ROUTINE)producer,(LPVOID)1,0,&dwID1);hHa ndle2=CreateThread(LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_STA RT_ROUTINE)producer,(LPVOID)2,0,&dwID2);hHa ndle3=CreateThread(LPSECURITY_ATTRIBUTES)NULL,0,(LPTHREAD_STA RT_ROUTINE)co nsum
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中国教育金融行业市场调研分析及发展前景预测报告
- 2025中国教育质量评估行业市场标准体系及实施路径分析报告
- 2025中国教育装备行业市场格局与投资机会分析报告
- 2025中国教育虚拟现实行业市场调研及投资潜力分析报告
- 2025中国教育投资机构市场格局及投资策略研究报告
- 2025中国教育安全行业发展趋势与投资风险评估研究报告
- 统编版小学一年级生字词教学设计
- 初中英语听力训练集及考试题库
- 行政办公自动化管理规范
- 运营数据分析报表设计与应用实例
- 2025乌鲁木齐银行秋季招聘备考考试题库附答案解析
- 思维导图在护理工作应用
- 北师大版八年级上册数学 第5章 二元一次方程 问题解决策略:逐步确定 教案
- 开展集中整治群众身边不正之风和腐败问题工作总结汇报
- 工厂安全与环保知识培训课件
- 《急救呼吸机详解》课件
- 技术开发合同协议书范本
- 知道智慧树农产品市场营销满分测试答案
- 运维工具管理制度
- 患病人员管理办法
- 室内轮式智能巡检机器人 - 采购技术条件书81
评论
0/150
提交评论