第4,5章 进程和线程.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 进程间通信 4.1 进程 进程是程序在计算机上的一次执行的活动。当运行一个程序,就启动了一个进程。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;用户进程就是所有由用户启动的进程。进程是操作系统进行资源分配的单位。 进程是应用程序的执行实例,每个进程都有私有的虚拟地址空间、代码、数据和其它系统资源。操作系统在创建进程时为其分配资源,在进程结束时回收资源。在很多实际应用中,往往需要多个进程协同工作,它们之间要交换数据,这就要用到进程间通信机制。 1 创建进程 可以使用 CreateProcess函数创建进程。 在调用该函数时系统为新进程创建一个虚拟地址空间,并将可执行文件或任何必要的DLL文件的代码和数据加载到该进程的地址空间中。 通过执行c/c++ 运行期启动代码,新进行的主线程便开始运行,它最终调用WinMain,main等函数。成功的创建了新进程和主线程 ,CreateProcess函数便返回true。 系统打开可执行文件,就创建一个新进程,并将可执行文件的代码和数据映射到新进程的地址空间中。 2 终止进程 终止进程有以下三种方法: 主线程的进入点函数返回(最好使用这个方法)。 进程中的一个线程调用ExitProcess函数。 另一个进程调用TerminateProcess函数。 4.2 进程间通信(IPC) 进程间通信机制是指同一台计算机的不同进程之间,或在网络上不同计算机的进程之间的通信方法。 Win32提供了多种IPC机制,如NetBIOS,Socket,Mailslot(邮槽),pipes(管道) Event(事件)以及FileMapping(文件映射)等。 NetBIOS和Socket是网间的IPC机制,同一台计算机的不同进程通信首选文件映射。 第5章多线程结构的网络编程 5.1创建线程 多任务操作系统能独立运行几个程序,对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供多任务处理的能力。 操作系统创建进程时为其分配资源,在进程结束时回收资源。线程是一个独立的执行流,相当于进程内部的子程序。系统自动为每个进程生成一个主线程,然后主线程生成额外的子线程。 线程相关函数 CreateThread//创建线程 ResumeThread//激活线程 SuspendThread//挂起线程 GetPriorityClass//获取优先类 GetThreadPriority//获取优先级 ExitThread//退出当前线程 创建线程函数 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAb,//安全属性 DWORD dwStackSize, //线程堆栈大小 LPTHREAD_ATART_ROUTINE lpStartAddress, //线程函数地址 LPVOID lpParameter, //线程参数 DWORD dwCreationFlags, //创建标志 LPDWORD lpThreadId); //线程ID 函数调用程勇,返回值为新线程的句柄;函数调用失败,返回值为NULL. 线程创建实例 DWORD ThreadID; HANDLE hThread; hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)timefunc, NULL, 0, ThreadID); 分析实例:创建线程读取系统时间 5.2 线程同步 进程中的所有线程共享进程的虚拟地址空间,所有线程都可以访问进程的资源空间,这为编程带来方便也易造成冲突。 线程同步是为了协调多个线程的执行,保证数据完整性而采取的措施。 线程同步是通过同步对象来实现的。 主要有四种: 临界区 互斥量 信号量 事件 1 等待函数 (1)等待单个对象的信号 DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds) hHandle:同步对象句柄 dwMilliseconds:以毫秒为单位的超时间隔 (2)等待多个对象的信号 DWORD Wa

文档评论(0)

0520 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档