第七講进程间的同步与互斥.pptVIP

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七講进程间的同步与互斥

北京理工大学珠海学院 计算机教研室 第二章 Windows CE体系结构与功能 教学目的 熟悉进程的同步与互斥的概念;理解Windows CE5.0中进程间通信的手段,并能够理解并编写简单的多线程应用程序。 项目4:多线程-PDA下多任务实现 本节课程主要知识点 Windows CE5.0进程的同步与互斥(重点) Windows CE5.0进程间通信(难点) 教学重点 同步与互斥的概念 教学难点 进程的通信 进程的互斥 系统中的很多资源是共享资源。有些资源每时刻只允许由一个进程使用,同时请求该资源的进程就需要竞争使用这些资源,进程的这种关系为进程的互斥。 生活中的实例 共享资源每时每刻只允许一个人使用,这样的例子在生活中多的很吧? 图书馆的座位,公用电话… 同学们自己找找看? 临界资源critical resource 临界资源 一次仅允许一个进程使用的资源。 很多物理设备都属于临界资源。例如:纸带或卡片输入机、打印机、磁带机等。 除了物理设备外,许多变量、数据、表格、队列等也可以由若干个进程共享使用,但每时刻仅允许一个进程使用,这些资源也属于临界资源。 临界区critical section 临界区 针对同一临界资源进行操作的程序段,也称为互斥段。 任一共享进程一旦对临界资源开始操作,则在该操作结束之前,其它进程就不能对该临界资源进行处理。也就是说,执行这些操作的程序段必须是互斥执行的。 2.2.4 同步 产生的原因:多线程、分时共享技术的使用; 作用:对多线程共享资源的访问加以保护; 必要性:造成数据损坏或者死锁。 Windows CE的同步机制 Mutex Event Semaphore Critical Section Interlocked Functions 同步对象的状态 通知(Signaled):阻塞线程转为就绪态,等待调度执行 未通知(Non- Signaled):表示该同步对象被一个或多个线程占有,不能被其它等待的线程占有 同步的基本原理:当某个同步对象的状态变为通知状态时,等待在它上面的阻塞线程会得到通知,并且转为就绪态,等待调度执行。 同步对象的使用 由句柄(Handle)表示,一个32位的指针 句柄的指向表示该对象的一个数据结构 可以有名字也可以没有名字 若跨进程使用同步对象,一般要命名。 等待函数(见P42) WaitForSingleObject 等待单个同步对象 WaitForMultipleObjects 等待多个同步对象 2.2.4.1 Mutex Mutual Exclusion,互斥 同时只有一个线程可以占有Mutex对象 当共享资源同时只能被一个线程访问,使用Mutex进行同步 相关函数 CreateMutex 创建一个有名或无名的Mutex对象 bInitialOwner参数指定该Mutex是否为创建的线程所占有 ReleaseMutex 释放对Mutex对象的占有 2.2.4.2 Semaphore 信标或信号灯 带有引用计数的Mutex,即带有计数n,表示同时最多可以有n个线程占有该信号灯 若共享资源同时被固定数量的线程使用,则选用Semaphore进行同步 相关函数 CreateSemaphore 创建信号灯 参数IMaximumCount指定最多可有多少个线程占有该信号灯对象 参数IInitialCount为信号灯指定初始计数 ReleaseSemaphore 使用此函数释放信号灯对象,则IInitialCount指定的初始值增加IReleaseCount 当有线程使用ReleaseSemaphore函数释放Semaphore对象时,该初始值增加1;当有线程使用等待函数占有信号灯时,该初始值减1 若信号灯的计数大于0,则信号灯处于通知状态;若计数小于0,处于未通知状态 事件Event 事件 事件就是一个标志,不具备其它信息。 在一个进程中将事件设置为通知状态,则所有等待该事件的进程将进入就绪状态。 没有进程发送该事件的通知信号,则所有等待该事件的进程均处于阻塞状态。 事件在进程的同步与互斥中用的最多。 2.2.4.3 Event 当一个线程需要通知其它线程某个时间发生,则使用事件(Event)同步对象 此同步对象使用比较广泛。在Windows CE驱动程序中,中断处理线程就是使用事件同步对象来等待中断发生。 相关函数 CreateEvent 参数bInitialState参数指定Event的初始状态。若为True则新创建的Event最开始就是通知状态 参数bManualReset用来指定Event是否为人工重置。人工的话,等待该Event的所有线程均变为就绪态,而Event还处于通知状态,调用ResetEvent;自动的话,等待该Event的线程中

文档评论(0)

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

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

1亿VIP精品文档

相关文档