在Delphi中使用多线程技术
线程概念是为了解决多任务和多进程的内存分配以及协调并行工作而提出的。多线程是某一个任务同时处理几个工作,比如,同时对几个数据库进行更新等等。Delphi5提供了一个多线程类——TThread,可以允许用户编写多线程处理程序。
Tthread是一个能够在应用程序中创建互不相干的执行线程的类。每一个TThread对象的子类过程就是一个新的执行线程。从TThread类派生出的多个过程就可以是Delphi的应用程序完成多个线程的工作。要在应用程序中使用线程,必须从TThread中派生出一个新类,然后重载其相关的方法。
当一个应用程序运行时,程序就会将线程装载到内存中并予执行,由此,程序运行就变成了包含一个或几个甚至更多线程的过程,这些线程包含了运行这个程序的数据、代码和其他系统资源。一个线程执行程序的一部分,通过操作系统分配CPU的时间。这个过程中的所有线程共享一个地址空间,并使用全局变量处理这个过程。
使用线程可以改进程序的一些性能,如:
1、 为多个通信设置管理数据的输入。
2、 区分多个任务的优先权。
在Delphi中使用多线程应注意如下问题:
1、 跟踪多线程比较耗时,建议在一个单CPU计算机中,每一个进程不能超过16个线程。
2、 在多个线程更新同一个资源时,要保持线程的同步以免造成冲突。
3、 处理一个VCL线程和更新一个窗体的方法必须在主VCL线程内请求。
创建和使用Delphi中多线程的步骤如下:
1、 从“File”菜单中的“New”命令中选择“Thread”,确定选择后Delphi将自动创建一个新单元。这个新单元中将包含用户自定义的一个TThread派生类。
2、 定义多线程对象的Create方法。
3、 插入多线程对象的执行代码,以定义多线程对象的Execute方法。
4、 传递请求使用VCL组件的Synchronize方法,该方法能够引发主VCL线程招待这个请求,从而避免多线程的冲突。
注:在VCL中对象的方法和属性只有使用Synchronize调用后才能启动线程同步执行。