网站大量收购独家精品文档,联系QQ:2885784924

Delphi编程语言多线程详解.pdfVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

第11章编写多线程应用程序

本章内容:

对线程的解释

•TThread对象

•管理多线程

一个多线程的示范程序

・多线程与数据库

•多线程与图形处理

Win32操作系统提供了在应用程序中执行多线程的能力。从16位的Windows升级到Win32的一个最

大受益便是:它允许多线程同时运行。这也是要升级到32位Delphi的一个最主要的原因。本章提供了

程序中如何进行多线程编程的所有细节。

11.1对线程的解释

如同在第3章“Win32API”中所讨论过的,线程是一种操作系统对象,它表示在进程中代码的一

条执行路径。在每一Win32的应用程序中都至少有一个线程,它通常被称为主线程或默认线程。在

应用程序中也可以自由地创建别的线程去执行其他任务。

线程技术使不同的代码可以同时运行,多个线程才能够真正地

。当然只有在多CPU的计算机上,

同时运行。然而,由于操作系统把CPU的时间分成很短的片段分配给每个线程,这样给人的感觉好像

是多个线程真的同时运行。

提示线程不能也从来没有被16位的Windows支持。这就意味着,任何32位版本的Delphi的

多线程程序代码都有无法在Delphi1环境下编译。如果你在为这两个平台开发程序,请一定记

住这一点。

11.1.1一种新型的多任务

线程的概念与16位环境中的多任务有很大的不同。Win32是一种抢占式操

或许曾听人们这样讲:

,Windows是一种协作式的多任务环境。

作系统而3.1

其关键区别在于:在抢占式多任务环境中,操作系统负责管理哪个线程在什么时候执行。如果当

线程1暂停执行时,线程2才有机会获得CPU时间,我们说线程1是抢占的。如果某个线程的代码陷入

死循环,这并不可怕,操作系统仍会安排时间给其他线程。

在Windows3.1下,程序员必须保证应用程序能够把控制权返还给Windows。如果这一步失败,将

导致整个操作环境锁死,或许你已经有过这样的痛苦经历。只要稍微想想便会明白,16位的Windows

是如此脆弱,它依赖于应用程序的运行情况,并且不允许程序陷入死循环或无穷递归以及任何封闭状

态。这是因为所有的应用程序都必须协助Windows工作,这种工作类型被称为协作式多任务系统。

11.1.2在Delphi程序中使用多线程

对一Windows程序员来说,线程提供了非常大的好处。可以在应用程序中的任何地方创建多

附属线程,它们在后台进行各种类型的处理。例如:在一个电子表格程序中计算单元格,或是脱机打

印Word文档。即使后台正在处理许多工作,也不会影响前台的用户界面。

大多数VCL在被设计时,都只考虑了在任何时刻只有一个线程来访问它。其局限性尤其体现在

VCL。,一些非用户界面部分也不是线程安全的。

的用户界面部分同时

1.非用户界面的VCL

实际上VCL只有很少的部分保证是线程安全的。可能在这很少的部分中,最让人注意的是VCL的

属性流机制。VCL的流机制确保了组件流能被多线程安全地读写。请记住即使最基础的VCL类诸如

TLis)也不是为安全地同时操作多个线程而设计的VCL

,。对某些情况,提供了一些线程安全的替代,

比如,用TThreadLis来替代TLis可以解决多个线程操作的问题。

2.用户界面的VCL

VCL要求所有的用户界面控制要发生

文档评论(0)

xf118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档