2024年4月21日发(作者:)

还在Dos时代,人们就在寻求一种多任务的实现。于是出现了TSR类型的后

台驻留程序,比较有代表性的有Side Kick、Vsafe等优秀的TSR程序,这类

程序的出现和应用确实给用户使用计算机带来了极大的方便,比如Side Kick,

我们编程可以在不用进编辑程序的状态下,一边编辑源程序,一边编译运行,

非常方便。但是,Dos单任务操作系统的致命缺陷注定了在Dos下不可能开

发出真正的多任务程序。进入Windows3.1时代,这种情况依然没有根本的改

变,一次应用只能做一件事。比如数据库查询,除非应用编得很好,在查询

期间整个系统将不响应用户的输入。

进入了Windows NT和Windows 9x时代,情况就有了彻底的改观,操作

系统从真正意义上实现了多任务(严格地说,Win9x还算不上)。一个应用程

序,在需要的时候可以有许多个执行线程,每个线程就是一个小的执行程序,

操作系统自动使各个线程共享CPU资源,确保任一线程都不能使系统死锁。

这样,在编程的时候,可以把费时间的任务移到后台,在前台用另一个线程

接受用户的输入。对那些对实时性要求比较高的编程任务,如网络客户服务、

串行通信等应用时,多线程的实现无疑大大地增强了程序的可用性和稳固性。

在Windows NT和Windows 9x中,多线程的编程实现需要调用一系列的

API函数,如CreateThread、ResumeThread等,比较麻烦而且容易出错。我

们使用Inprise公司的新一代RAD开发工具C++Builder,可以方便地实现

多线程的编程。与老牌RAD工具Visual Basic和Delphi比,C++Builer不

仅功能非常强大,而且它的编程语言是C++,对于系统开发语言是C的

Windows系列操作系统,它具有其它编程语言无可比拟的优势。利用C++

Builder提供的TThread对象,多线程的编程变得非常简便易用。那么,如何

实现呢?且待我慢慢道来,让你体会一下多线程的强大功能。

1. 创建多线程程序:

首先,先介绍一下实现多线程的具体步骤。在C++Builder中虽然用

Tthread对象说明了线程的概念,但是Tthread对象本身并不完整,需要在

TThread下新建其子类,并重载Execute方法来使用线程对象。在C++Builder

下可以很方便地实现这一点。

在C++Builder IDE环境下选择菜单File|New,在New栏中选中Thread

Object,按OK,接下来弹出输入框,输入TThread对象子类的名字MyThread,

这样C++Builder自动为你创建了一个名为TMyThread的TThread子类。同

时编辑器中多了一个名为的单元,这就是我们创建的TMyThread子

类的原码,如下:

#include

#pragma hdrstop

#include “Unit2.h”

#pragma package(smart_init)

//---------------------

// Important: Methods and properties of objects in VCL can only be

// used in a method called using Synchronize, for example:

//

// Synchronize(UpdateCaption);

//

// where UpdateCaption could look like:

//

// void __fastcall MyThread::UpdateCaption()