- 47
- 0
- 约2.04万字
- 约 15页
- 2017-07-09 发布于湖北
- 举报
实验三 进程同步实验概要1
实验三 进程同步
一、实验内容:
学习Windows有关进程/线程同步的背景知识
二、实验目的: Windows 进程、线程同步的理解。
(1) 了解互斥量和信号量对象。
(2) 通过分析实验程序,理解管理信号量对象的API。
(3) 理解在进程中如何使用信号量对象。
(4) 通过分析实验程序,理解在线程中如何使用互斥量对象。
(5) 理解父进程创建子进程的程序设计方法,理解在主线程中创建子线程的方法。
三、实验要求:
(1) 理解Windows有关进程/线程同步的背景知识3-2程序,写出一个实现单个生产者—消费者问题的算法,可以使用单个缓冲区,也可以使用缓冲池,生产者随机产生任意形式的数据并放入缓冲区中,消费者则以随机的时间间隔从缓冲区中取数据,随机时间请使用随机数产生。
四、并发与同步的背景知识
Windows开发人员可以使用同步对象来协调线程和进程的工作,以使其共享信息并执行任务。此类对象包括互斥量Mutex、信号量Semaphore、事件Event等。
多进程、多线程编程中关键的一步是保护所有的共享资源,工具主要有互斥量Mutex和信号量Semaphore等;另一个是协调线程使其完成应用程序的任务,为此,可利用内核中的信号量对象或事件对象。
互斥量是一个可命名且安全的内核对象,主要目的是引导对共享资源的访问。拥有单一访问资源的线程创建互斥体,所有希望访问该资源的线程应该在实际执行操作之前获得互斥体,而在访问结束时立即释放互斥体,以允许下一个等待线程获得互斥体,然后接着进行下去。
利用CreateMutex() API可创建互斥量,创建时可以指定一个初始的拥有权标志,通过使用这个标志,只有当线程完成了资源的所有的初始化工作时,才允许创建线程释放互斥体。
为了获得互斥体,首先,想要访问调用的线程可使用OpenMutex() API来获得指向对象的句柄;然后,线程将这个句柄提供给一个等待函数。当内核将互斥体对象发送给等待线程时,就表明该线程获得了互斥体的拥有权。当线程获得拥有权时,线程控制了对共享资源的访问——必须设法尽快地放弃互斥体。放弃共享资源时需要在该对象上调用ReleaseMutex() API。然后系统负责将互斥量拥有权传递给下一个等待着的线程 (由到达时间决定顺序) 。
信号量Semaphore与互斥量Mutex的用法不同,互斥量Mutex保证任意时刻只能有一个进程或线程获得互斥体,信号量允许多个线程同时使用共享资源,这与操作系统中的Wait/Signal操作【也称PV操作】相同。它指出了同时访问共享资源的线程最大数目。它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。在用CreateSemaphore()创建信号量时即要同时指出允许的最大资源计数和当前可用资源计数。一般是将当前可用资源计数设置为最大资源计数或者0。每增加一个线程对共享资源的访问,当前可用资源计数就会减1,只要当前可用资源计数是大于0的,就可以发出信号量信号。但是当前可用计数减小到0时则说明当前占用资源的线程数已经达到了所允许的最大数目,不能在允许其他线程的进入,此时的信号量信号将无法发出。线程在处理完共享资源后,应在离开的同时通过ReleaseSemaphore()函数将当前可用资源计数加1。在任何时候当前可用资源计数决不可能大于最大资源计数。
此外,windows还提供了另外一个容易误导大家理解的同步对象,取名为Critical Section,中文取名为临界区,请大家注意与课本讲的临界资源、临界区的概念相区分。课本上临界区指“对临界资源进行访问的代码”;而这种称为“Critical Section”互斥机制,并不是这个意思,而是访问临界区之前的一种加锁机制,与互斥量Mutex的作用类似,只是“Critical Section”互斥机制只能在同一进程内部各个线程间使用,而Mutex互斥机制是可以跨进程使用的。
五、实验步骤
1. 信号量Semaphore对象
清单3-1程序展示如何在进程间使用信号量对象。
父进程启动时,利用CreateSemaphore () API创建一个命名的、可共享的信号量对象,并利用CreateProcess()创建子进程,然后调用WaitForSingleObject()函数去获取信号量,但是由于信号量的初始值为0,所以父进程阻塞在此,无法成功占有信号量;子进程创建后,调用OpenSemaphore()打开父进程创建的信号量,然后调用ReleaseSemaphore()函数释放了1个信号量,此后,处于阻塞状态的父进程获取了子进程释放的信号量,从而解除了阻塞,继续运行至程序结束。
清单3-1 创建和打开信号量对象在进程间传送信号
// Semaphore信号量项目
#
您可能关注的文档
- 实验一二三概要1.doc
- 实验一嵌入式系统设计概要1.doc
- 实验七 端口聚合提供冗余备份链路概要1.doc
- 实验七 ENVI软件介绍概要1.doc
- 实验三 交换机基本配置及交换机端口配置概要1.doc
- 实验七网络编程概要1.doc
- 实验一 认识Matlab编程环境概要1.doc
- 实验三 图形用户界面设计(汽院含答案)概要1.doc
- 实验三 Java面向对象高级编程概要1.doc
- 实验三 导数 数学实验课件习题答案概要1.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- 交流转辙机道岔动作电流故障曲线分析信号集中监测课件.pptx VIP
- 2025届东北三省三校高三下学期第一次联合模拟考试政治试题(原卷版+解析版).docx VIP
- 养老服务质量检测90项.pdf VIP
- 光谱分析图谱与标志.docx
- 2025新课标中考英语词汇.pdf VIP
- T_CNPHARS 0001-2025 群体药动学药效学分析标准操作规范.pdf VIP
- (2026年)血浆置换及血浆分离吸附护理要点PPT课件.pptx VIP
- 农村狗狗交配的全过程,让你看了有点不可置信.pdf VIP
- 医院培训课件:《死亡医学证明(推断)书》规范填写及死因链基础知识.pptx VIP
- 健康体检表样表最新文档.docx VIP
原创力文档

文档评论(0)