C++Builer中多线程的实现[VC/C++编程]
本文“C++Builer中多线程的实现[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
还在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子类.同时编辑器中多了一个名为Unit2.cpp的单元,这就是我们成立的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()
// {
// Form1->Caption = “Updated in a thread”;
// }
//--------------------
__fastcall MyThread::MyThread(bool CreateSuspended)
: Tthread(CreateSuspended)
{
}
//--------------------
void __fastcall MyThread::Execute()
{
//---- Place thread code here ----
}
//---------------------
此中的Execute()函数就是我们要在线程中实现的任务的代码所在处.在原代码中包含Unit2.cpp,这个由我们成立的TMyThread对象便可以利用了.利用时,动态成立一个TMyThread 对象,在构造函数中利用Resume()办法,那么程序中就增添了一个新的我们自己定义的线程TMyThread,具体履行的代码就是Execute()办法重载的代码.要加载更多的线程,不要紧,只要持续成立需求数目的TMyThread 对象就成.
以上我们初步地实现了在程序中成立一个自定义的线程,并使程序实现了多线程利用.但是,多线程利用的实现,并非一件简单的工作,还需求考虑很多使多个线程能在系统中共存、互不影响的因素.比方,程序中大众变量的拜候、资源的分配,假如处理不当,不但线程会死锁陷入混乱,乃至大概会造成系统崩溃.总的来说,在多线程编程中要注意同享对象和数据的处理,不能轻忽.因此,下面我们要讲的就是多线程中常见问题:
以上是“C++Builer中多线程的实现[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |