下载
第6章 线程的基础知识
理解线程是非常关键的,因为每个进程至少需要一个线程.本章将更加详细地介绍线程的 知识.尤其是要讲述进程与线程之间存在多大的差别,它们各自具有什么作用.还要介绍系统 如何使用线程内核对象来管理线程.与进程内核对象一样,线程内核对象也拥有属性,我们将 要观察许多用于查询和修改这些属性的函数.此外还要介绍可以在进程中创建和生成更多的线 程时所用的函数. 第4章介绍了进程是由两个部分构成的,一个是进程内核对象,另一个是地址空间.同样, 线程也是由两个部分组成的: 一个是线程的内核对象,操作系统用它来对线程实施管理.内核对象也是系统用来存放 线程统计信息的地方. 另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量(第 16章将进一步介绍系统如何管理线程堆栈) . 第4章中讲过,进程是不活泼的.进程从来不执行任何东西,它只是线程的容器.线程总 是在某个进程环境中创建的,而且它的整个寿命期都在该进程中.这意味着线程在它的进程地 址空间中执行代码,并且在进程的地址空间中对数据进行操作.因此,如果在单进程环境中, 你有两个或多个线程正在运行,那么这两个线程将共享单个地址空间.这些线程能够执行相同 的代码,对相同的数据进行操作.这些线程还能共享内核对象句柄,因为句柄表依赖于每个进 程而不是每个线程存在. 如你所见,进程使用的系统资源比线程多得多,原因是它需要更多的地址空间.为进程创 建一个虚拟地址空间需要许多系统资源.系统中要保留大量的记录,这要占用大量的内存.另 外,由于.exe和.dll文件要加载到一个地址空间,因此也需要文件资源.而线程使用的系统资源 要少得多.实际上,线程只有一个内核对象和一个堆栈,保留的记录很少,因此需要很少的内 存. 由于线程需要的开销比进程少,因此始终都应该设法用增加线程来解决编程问题,而要避 免创建新的进程.但是,这个建议并不是一成不变的.许多程序设计用多个进程来实现会更好 些.应该懂得权衡利弊,经验会指导你的编程实践. 在详细介绍线程之前,首先花一点时间讲一讲如何正确地在应用程序结构中使用线程.
6.1 何时创建线程
线程用于描述进程中的运行路径.每当进程被初始化时,系统就要创建一个主线程.该线 程与C / C + +运行期库的启动代码一道开始运行,启动代码则调用进入点函数( m a i n,w m a i n, WinMain或wWinMain) ,并且继续运行直到进入点函数返回并且 C/C++运行期库的启动代码调 用E x i t P r o c e s s为止.对于许多应用程序来说,这个主线程是应用程序需要的唯一线程.不过, 进程能够创建更多的线程来帮助执行它们的操作. 每个计算机都拥有一个功能非常强大的资源,即 CPU.让CPU闲置起来是绝对没有道理的 (如果忽略节省电能问题的话) .为了使CPU处于繁忙状态之中,可以让它执行各种不同的工作. 下面是一些例子:
122
计计第二部分 编程的具体方法
下载
可以打开Microsoft Windows 2000配备的内容索引服务程序.它能够创建一个低优先级的 线程,以便定期打开你的磁盘驱动器上的文件内容并给内容做索引.若要找到一个文件, 可以打开 Search Result(搜索结果)窗口(方法是单击 S t a r t按钮,从 S e a r c h菜单中选定 For Files Or Folders) ,再将你的搜索条件输入Containing Text域.这时就可以搜索到索引, 相关的文件就会立即显示出来.内容索引服务程序大大改进了性能,因为每次搜索不必 打开,扫描和关闭磁盘驱动器上的每个文件. 可以使用Windows 2000配备的磁盘碎片整理软件.通常情况下,这种类型的实用程序拥 有许多管理选项,一般用户可能不懂,比如该实用程序应该相隔多长时间运行一次,何 时运行.使用低优先级线程,可以在后台运行该实用程序,并且在系统空闲时对驱动器 进行碎片整理. 可以很容易地设想将来版本的编译器,每当暂停键入时,它就可以自动编译你的源代码 文件.输出窗口可以向你(几乎)实时显示警告和出错信息.当键入变量和函数名时出 现错误时,就能立即发现.在某种程度上讲, Microsoft Visual Studio已经实现了这个功 能,使用Workspace的ClassView窗格,就能够看到这些信息. 电子表格应用程序能够在后台执行各种计算. 字处理程序能够执行重新分页,拼写和语法检查及在后台进行打印. 文件可以在后台拷贝到其他介质中. We b浏览器在后台与它们的服务器进行通信.因此,在来自当前 We b站点的结果输入之 前,用户可以缩放浏览器的窗口或者转到另一个 Web站点. 这些例子中,有一个重要问题应该注意,那就是多线程能够简化应用程序的用户界面.如 果每当停止键入时,编译器建立了你的应用程序,那么就没有必要提供 B u i l d菜单选项.文字 处理应用程序不需要Check Spelling(拼写检查)和Check Grammar(语法检查)菜单选项. 在Web浏览器的例子中,注意,将不同的线程用于 I/O(网络,文件或其他) ,应用程序的 用户界面就能够始终保持工作状态.比如有一个应用程序负责给数据库记录进行排序,打印文 档或拷贝文件.如果将独立的线程用于处理这个与 I / O相关的任务,用户就可以在进程中继续 使用应用程序界面来取消操作. 设计一个拥有多线程的应用程序,就会扩大该应用程序的功能.我们在下一章中可以看到, 每个线程被分配了一个 CPU.因此,如果你的计算机拥有两个 CPU,你的应用程序中有两个线 程,那么两个 CPU都将处于繁忙状态.实际上,你是让两个任务在执行一个任务的时间内完成 操作. 每个进程至少拥有一个线程.因此,如果你在应用程序中不执行任何特殊的操作,在多进 程操作系统上运行,就能够得到许多好处.例如,可以建立一个应用程序,并同时使用文字处 理程序(我常常这样做) .如果计算机拥有两个 C P U,那么该应用程序就可以在一个处理器上 执行,而另一个处理器则负责处理文档.另外,如果编译器出现一个错误,导致它的线程进入 一个无限循环,仍然可以使用其他的进程( 16位Windows和MS-DOS应用程序则不行) .
- msvcrtd.dll下载 > 线程的基础知识
-
线程的基础知识
下载该文档 文档格式:PDF 更新时间:2004-05-02 下载次数:0 点击次数:1
文档基本属性 文档语言: 文档格式: PDF 文档作者: 关键词: 主题: 备注: 点击这里显示更多文档属性 经理: 单位: 分类: 创建时间: 上次保存者: HH 修订次数: 29 编辑时间: 文档创建者: 修订: 加密标识: 幻灯片: 15 段落数: 93 字节数: 33686 备注: 0 演示格式: 在屏幕上显示 上次保存时间:
- 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
-
PDF格式下载
- 更多文档...
-
上一篇:贵州久联民爆器材发展股份有限公司2008年第一季度季度...
下一篇:线程的基础知识
点击查看更多关于msvcrtd.dll下载的相关文档
- 您可能感兴趣的
- 下载安装msvcrtddll win7msvcrtddll下载 msvcrtddll msvcrtddll修复 重新安装msvcrtddll msvcrtddll是什么 安装msvcrtddll 删除msvcrtddll 没有找到msvcrtddll
- 大家在找
-
- · 南京德林环保仪器
- · 倒数的认识说课ppt
- · 2011wro机器人大赛
- · 大学生心理健康课教案
- · iphone中文说明书下载
- · 河北2012会计考试试题
- · 上海海事大学bbs
- · 腰腹部吸脂减肥好吗
- · 贵州煤矿电工招聘
- · 广州三凌plc代理
- · 办公室实务ppt
- · 中大雁行社
- · 鲁迅散文集读后感
- · 影楼摄影师工资
- · www.hua2004.com
- · htcg11说明书
- · 常熟市千斤顶厂
- · 深圳嘉华珠宝招聘
- · 58.com同城二手车
- · 防盗电话报警控制器电路设计
- · 服装临时工车工常熟
- · 八年级英语作文
- · 会计职业能力及适应性
- · 生物统计学就业前景
- · 南阳华中技校
- · 补肾养生的粥有哪些
- · 精通flash8下载
- · 功率因数补偿计算
- · MathType5.0
- · dota巨魔战将出装
- 赞助商链接