当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 用maven-jdocbook-plugin简单配置docbook5.0环境
  • 向Docbook5.0过渡系列(1)
  • 向Docbook5.0过渡系列(2)-给Image加链接
  • 用CB在WIN.INI中保存信息
  • 用BCB3.0制作桌面动画
  • <b>若何用BCB做出可移动的菜单</b>
  • <b>CB的Form最小化时无动画的缘由</b>
  • <b>如安在BCB中调试Active Form</b>
  • <b>CB编程中动态更改自定义打印纸张</b>
  • <b>用CB制作具有HTML气势的动态按钮</b>
  • <b>BCB中实现TRichEdit的自动格局化</b>
  • <b>通过预编译头文件来提高CB的编译速度</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .