VC_进程线程.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC_进程

多线程概述 DOS -单任务 单线程 Windows(32)- 抢先式多任务 基于进程(系统控制) 基于线程(讨论重点) 每个进程至少有一个线程 进程 进程 Process,就是应用程序的一个运行实例。有自己私有的地址空间,同时至少还有一个主线程 两部分组成: 管理进程的内核对象。系统用来存放关于进程的统计信息的地方(结构) 地址空间。包含执行模块或DLL模块的代码和数据,包含动态内存分配的空间。 32位Windows操作系统中,每个进程可以有4G内存地址空间 进程 Windows 32的进程是惰性的。 创建一个进程,系统自动创建第一个线程-主线程 线程执行进程地址空间中的代码 多线程—时间片 线程 线程 Thread,Windows操作系统中一个最小的执行单元。CPU把时间片分给线程而不是进程。 两部分组成: 管理线程的内核对象。系统用来存放关于线程的统计信息的地方(结构) 线程堆栈。维护线程在执行代码时需要的所有函数参数和局部变量等。 进程是线程的容器,线程总在某个进程环境中创建 创建一个进程的开销远大于创建一个线程 通常采用增加线程来解决编程问题。 进程和线程的优先级 每个线程都可以设置优先级 优先级高的线程,永远首先获得CPU的青睐。 产生线程,不直接指定优先级 指定优先级等级给进程 指定相对优先级给这个进程的线程 进程和线程的优先级 进程的基本优先级 调整线程优先级 SetThreadPriority(int nPriority) 产生新进程 创建过程 创建一个进程内核对象,其初始使用计数为1。 系统为新进程创建一个虚拟地址空间,将可执行文件或者任何必要的DLL文件的代码和数据加载到该进程地址空间 系统为新进程的主线程创建一个线程内核对象,其初始使用计数为1。执行启动代码,主线程便开始运行 产生新进程 函数说明 CreateProcess函数原形 BOOL CreateProcess( ………. ………. ………. ) 进程的终止 4种情况 主线程的进入点函数返回 进程中的一个线程调用ExitProcess函数 另一个进程中的线程调用TerminateProcess函数 进程中的所有线程均终止运行 进程的终止 主线程的进入点函数返回 该线程创建的任何对象能利用析构函数正确的撤消 操作系统能正确的释放该线程的堆栈使用的内存 系统将进程的退出代码设置为进入点函数的返回值 系统将进程内核对象的返回值递减1 进程的终止 ExitProcess(UINT fuExitCode) 将要终止进程的退出码赋给fuExitCode ExitProcess之后的代码不会运行,许多执行期间的对象也许无法正确清除 进程的终止 TerminateProcess(HANDLE hProcess UINT fuExitCode) 将要终止进程的退出码赋给fuExitCode TerminateProcess许多执行期间的对象也许无法正确清除 任何线程都可以调用,来终止另一个进程或它自己的进程 无法保证该进程已经终止 进程的终止 进程终止运行的操作 进程中剩余的所有线程全部终止 进程指定的所有用户对象和GDI对象均被释放,所有内核对象均被关闭(如果没有其他进程打开他们的句柄,内核对象将被撤消) 进程的退出码将从STILL_ACTIVE改为传递给ExitProcess或TerminateProcess的代码 进程内核的状态变成收到通知的状态。系统中的其他线程可以挂起,直到进程终止 进程内核对象的使用计数递减1 创建多线程 工作线程 实质上就是一个并行执行的函数。为了完成计算等任务 用户界面线程 必须产生新的用户界面,线程内必须有消息循环 创建工作线程 创建一个工作线程函数 使用相应的函数来产生工作线程 11-01

文档评论(0)

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

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

1亿VIP精品文档

相关文档