- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 线程的基础知识.PDF
下载
第6章 线程的基础知识
理解线程是非常关键的,因为每个进程至少需要一个线程。本章将更加详细地介绍线程的
知识。尤其是要讲述进程与线程之间存在多大的差别,它们各自具有什么作用。还要介绍系统
如何使用线程内核对象来管理线程。与进程内核对象一样,线程内核对象也拥有属性,我们将
要观察许多用于查询和修改这些属性的函数。此外还要介绍可以在进程中创建和生成更多的线
程时所用的函数。
第4章介绍了进程是由两个部分构成的,一个是进程内核对象,另一个是地址空间。同样,
线程也是由两个部分组成的:
• 一个是线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放
线程统计信息的地方。
• 另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量(第
1 6章将进一步介绍系统如何管理线程堆栈)。
第4章中讲过,进程是不活泼的。进程从来不执行任何东西,它只是线程的容器。线程总
是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。这意味着线程在它的进程地
址空间中执行代码,并且在进程的地址空间中对数据进行操作。因此,如果在单进程环境中,
你有两个或多个线程正在运行,那么这两个线程将共享单个地址空间。这些线程能够执行相同
的代码,对相同的数据进行操作。这些线程还能共享内核对象句柄,因为句柄表依赖于每个进
程而不是每个线程存在。
如你所见,进程使用的系统资源比线程多得多,原因是它需要更多的地址空间。为进程创
建一个虚拟地址空间需要许多系统资源。系统中要保留大量的记录,这要占用大量的内存。另
外,由于. e x e和. d l l文件要加载到一个地址空间,因此也需要文件资源。而线程使用的系统资源
要少得多。实际上,线程只有一个内核对象和一个堆栈,保留的记录很少,因此需要很少的内
存。
由于线程需要的开销比进程少,因此始终都应该设法用增加线程来解决编程问题,而要避
免创建新的进程。但是,这个建议并不是一成不变的。许多程序设计用多个进程来实现会更好
些。应该懂得权衡利弊,经验会指导你的编程实践。
在详细介绍线程之前,首先花一点时间讲一讲如何正确地在应用程序结构中使用线程。
6.1 何时创建线程
线程用于描述进程中的运行路径。每当进程被初始化时,系统就要创建一个主线程。该线
程与C / C + +运行期库的启动代码一道开始运行,启动代码则调用进入点函数( m a i n 、w m a i n 、
Wi n M a i n或w Wi n M a i n ),并且继续运行直到进入点函数返回并且 C / C + +运行期库的启动代码调
用E x i t P r o c e s s为止。对于许多应用程序来说,这个主线程是应用程序需要的唯一线程。不过,
进程能够创建更多的线程来帮助执行它们的操作。
每个计算机都拥有一个功能非常强大的资源,即 C P U 。让C P U 闲置起来是绝对没有道理的
(如果忽略节省电能问题的话)。为了使C P U处于繁忙状态之中,可以让它执行各种不同的工作。
下面是一些例子:
122计计第二部分 编程的具体方法
下载
• 可以打开Microsoft Windows 2000配备的内容索引服务程序。它能够创建一个低优先级的
线程,以便定期打开你的磁盘驱动器上的文件内容并给内容做索引。若要找到一个文件,
可以打开Search Result (搜索结果)窗口(方法是单击S t a r t按钮,从S e a r c h菜单中选定
For Files Or Folders ),再将你的搜索条件输入Containing Te x t域。这时就可以搜索到索引,
相关的文件就会立即显示出来。内容索引服务程序大大改进了性能,因为每次搜索不必
打开、扫描和关闭磁盘驱动器上的每个文件。
• 可以使用Windows 2000配备的磁盘碎片整理软件。通常情况下,这种类型的实用程序拥
有许多管理选项,一般用户可能不懂,比如该实用程序应该相隔多长时间运行一次,何
时运行。使用低优先级线程,可以在后台运行该实用程序,并且在系统空闲时对驱动器
进行碎片整理。
• 可以很容易地设想将来版本的编译器,每当暂停键入时,它就可
文档评论(0)