第四章 进程间通信 网络编程技术 教学课件.pptVIP

第四章 进程间通信 网络编程技术 教学课件.ppt

  1. 1、本文档共35页,可阅读全部内容。
  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文档。上传文档
查看更多
第四章 进程间通信 网络编程技术 教学课件

§4.5.2 释放内存文件映射 当完成对内存映射文件的使用时,必须执行下面两个步骤: 第一步:使用UnmapViewOfFile函数告诉系统从你的进程的地址空间中撤消文件映射对象的映像; 第二步:使用CloseHandle函数关闭文件映射对象。 (1)释放地址映射(UnmapViewOfFile) BOOL UnmapViewOfFile( LPCVOID lpBaseAddress); lpBaseAddress: address where mapped view begins 函数功能:从调用进程的地址空间中撤消文件映射对象的映像。必须记住要调用UnmapViewOfFile函数。如果没有调用这个函数,那么在你的进程终止运行前,保留的区域就不会被释放。此外,每当你调用MapViewOfFile时,系统总是在你的进程地址空间中保留一个新区域,而以前保留的所有区域将不被释放。函数成功返回一个非0值,否则返回0。 参数说明:该函数的唯一的参数lpBaseAddress用于设定释放区域的基地址,该值必须与调用MapViewOfFile函数返回的值相同。 §4.5.2 释放内存文件映射 (2)关闭文件映射对象(CloseHandle) BOOL CloseHandle( HANDLE hObject); 函数功能:关闭一个打开的文件映射对象。如果忘记关闭,在你的进程继续运行时会出现资源泄漏的问题。当然,当你的进程终止运行时,系统会自动关闭你的进程已经打开但是忘记关闭的任何对象。但是如果你的进程暂时没有终止运行,你将会积累许多资源句柄,造成资源泄漏。函数成功返回一个非0值,否则返回0。 参数说明:该函数唯一的参数hObject用于指定一个打开的文件映射对象句柄。 §4.5.3 利用内存文件映射共享数据 一个进程可以使用另一个进程的文件映射对象在自己的虚拟地址空间中建立一个相同的视图,从而实现在同一台计算机上运行的多个进程之间共享数据。下面举例说明如何利用文件映射实现进程间的通信。 假定P1和P2两个进程协同完成某一件工作,利用文件映射的共享内存方式实现它们之间的数据交换过程如下: P1进程 1.创建一个名为“ShareBuff” 文件映射对象; 2.将文件映射对象映射到P1的地址空间中; 3.在进程P1的地址空间中读取数据; 4.释放地址映射; 5.关闭文件映射对象; ? P2进程 1.打开一个名为“ShareBuff” 文件映射对象; 2.将文件映射对象映射到P2的地址空间中; 3.在进程P2的地址空间中读取数据; 4.释放地址映射; §4.5.4 利用事件实现进程同步 事件是一种简单的IPC机制,它主要用来在多个进程间传递消息。例如当前进程中的某些异步操作的完成便可以通过事件方式通知其它的进程,从而实现进程间的同步。事实上,在很多实际应用中,往往是将文件映射和事件这两种通信机制结合起来使用,利用文件映射实现进程间的数据交换,利用事件实现进程间的消息传递。 与事件相关的API函数有如下几个: 1) 创建事件对象CreateEvent(); 2) 打开事件对象OpenEvent(); 3) 设置事件为为有信号状态SetEvent(); 4) 设置事件为为无信号状态ResetEvent(); 5) 关闭事件对象CloseHandle(); 6) 等待单个事件WaitForSingleObject(); 7) 等待多个事件WaitForMultipleObjects(); 习题与思考题 4-1 如何创建一个进程,试给出一个利用CreateProcess函数创建进程的实例。 4-2 结束一个进程通常有哪几种方式?请分别进行说明。 4-3 IPC的含义是什么?试举出几种常用IPC机制并说明各自的特点。 4-4 内存文件映射的作用是什么?如何利用内存文件映射实现进程间的通信。 4-5 简要说明使用共享内存的基本原理,并给出其方法步骤。 4-6 利用内存文件映射的共享内存机制,写一个程序实现两个进程间的通信。 4-7 当完成对内存映射文件的使用时,为什么要释放相关的系统资源?请给出具体的释放方法和步骤。 * Jhgkug g khgujbljbl Jhjl kjnikn * * 网 络 编 程 南京理工大学 计算机学院 主 讲 教 师: 吕 建 勇 电 子 邮 箱: lv_jy@126.com 第四章 进程间通信 内 容 提 要 1、进程与进程间通信 2、创建一个进程 3、终止进程的运行 4、进程通信 5、内存文件映射 §4.1 进程与进程间通信 进程是应用程序的执行实例,每个进程都有私有的虚拟地址空间、代码、数据和其它系统资源。操作系统在创建进程时为其分配资源,在进程结

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档