下载此文档

第三十三篇 章 多执行绪(multi-thread) c++ builder 简体中文版.ppt


文档分类:医学/心理学 | 页数:约37页 举报非法文档有奖
1/37
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/37 下载此文档
文档列表 文档介绍
第三十三章多执行绪(Multi-Thread)
在这一章,我们将会提到Multi-Thread到底是什么东西,他在BCB的环境中该如何实作,并且实际了解在程序中使用Multi-Thread会带来什么样的优点与缺点。
1
大纲
33-1. 什么是Thread
33-2. 第一个Thread程序
33-3. Thread程序的应用
本章****题
2
33-1. 什么是Thread
常常可以听到很多操作系统的广告上都会声称自己拥有『多任务』的处理模式,也有很多操作系统都支持『多处理器』的系统,其实这些多任务或是多处理器的运作基础都是『Multi Thread』。我们先用两张图来表示什么是Non Thread的运作模式,什么是Multi Thread的运作模式。
Non Thread
Multi Thread
3
33-1. 什么是Thread
利用上面这两张图来做解释,在整个运作的时间内总共有三个Process在运作。假设现在我们使用的是Non Thread的模式在运作,这三个Process必须排队,等前面那一个Process结束了才可以进行下一个Process的操作;反之,在Multi Thread的运作模式下,只要该Process一进入CPU的处理排程内,就可以马上获得CPU Time来运作,只不过这三个Process在这种情况下并无法独占整个CPU的资源,并须和其它的Process共享。
4
33-1. 什么是Thread
不管在Non Thread或是Multi Thread的运作模式中,在一样的资源下效能并不会有什么增进,甚至在Multi Thread的模式下还会花比较久的时间才能完成(因为有许多Content Switching或是Interrupt的动作)。
不过因为在Multi Thread的情况下可以多个程序一起执行,所以在使用上会比较方便,除非有自行调整各个Thread的优先权,否则在同一台机器上的Thread的优先权都是平等的!
例如我们在计算机上可以一边使用Word,听mp3,使用Visio画图,利用浏览器搜寻网页,写程序等等,只要计算机够Powerful,这些事情都可以在同一个时间做,因为现在的OS(Operating System)都已经支持多任务了,只是越多工作同时进行,执行的效率也会越低。
5
33-1. 什么是Thread
从前面的介绍可以得知,Thread在执行的时候并不是『一直』都在执行,而是断断续续的执行,所以这之间就会有许多Interrupt和Content Switching等相关System Work需要处理,当一个Thread暂时失去CPU Time的时候,就是进入Sleep的状态,我们用下图来告诉各位,一个Thread的Life Cycle倒底是长什么样子!
8
33-2. 第一个Thread程序
在这一小节我们将利用范例33-1建立一个最基本的Thread程序。我们在底下将会一步一步引导着各位读者完成该范例。
首先我们先简单的介绍该如何在BCB中建立一个Thread Object。
要在BCB中建立一个Thread Object最简单就是在New的对话窗中选择『Thread Object』,接着会跳出一个对话窗让我们输入该Thread Object的『Class Name』;底下则还有一个『Check Box』让我们决定是不是要设定『Thread Name』。
当我们设定了Thread Name之后,BCB将会在Thread start的时候自动去呼叫『SetName』这个Method。
当我们按下对话窗『OK』的按钮后,BCB就会自动帮我们Generate出该Thread的相关程序代码,这个Thread该做什么事情就是由这个『』所决定的!
9
33-2. 第一个Thread程序
在BCB自动产生的程序代码中有三个重要函式
『Synchronize(UpdateCaption)』
在这段预设产生的程序代码中有一小段文字提到Synchronize(UpdateCaption)的用法。那段文字说明了,当我们在Thread中要使用VCL组件,一定要执行Synchronize(UpdateCaption)这个函式,否则会发生不可预期的错误,例如这个批注所提到的现象,假设有多个Thread都同时想要更改同一个VCL组件的Caption属性,这时候就会发生不可预期的错误,包括数据上的错误等等;如果我们在最前面使用Synchronize将UpdateCaption这个函式处理之后,就可以避免相关的错误发生。
10

第三十三篇 章 多执行绪(multi-thread) c++ builder 简体中文版 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数37
  • 收藏数0 收藏
  • 顶次数0
  • 上传人nnyoung
  • 文件大小547 KB
  • 时间2018-08-30