关于C++多线程编程教学

关于C++多线程编程教学,第1张

在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,接下来d出输入框,输入TThread对象子类的名字MyThread,这样C++Builder自动为你创建了一个名为TMyThread的TThread子类。同时编辑器中多了一个名为Unit2cpp的单元,这就是我们创建的TMyThread子类的原码,如下:

#include

#pragma hdrstop

#include “Unit2h”

#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()函数就是我们要在线程中实现的任务的代码所在处。在原代码中包含Unit2cpp,这个由我们创建的TMyThread对象就可以使用了。使用时,动态创建一个TMyThread 对象,在构造函数中使用Resume()方法,那么程序中就增加了一个新的我们自己定义的线程TMyThread,具体执行的代码就是Execute()方法重载的代码。要加载更多的线程,没关系,只要继续创建需要数量的TMyThread 对象就成。

thread_creationc

gcc thread_creationc

会在当前目录下,生成可执行的aout文件

/aout

/这是我写的最简单的多线程程序,看懂不?/

#include <windowsh>

#include <stdioh>

//#include <strsafeh>

DWORD WINAPI ThreadProc1( LPVOID lpParam )

{

int i=0,j=0;

while(1)

{

printf("hello,this thread 1 \n");

//延时

for(i=0;i<200000000;i++)

{

;

}

}

}

DWORD WINAPI ThreadProc2( LPVOID lpParam )

{

int i=0,j=0;

while(1)

{

printf("hello,this thread 2 \n");

//延时

for(i=0;i<200000000;i++)

{

;

}

}

}

void main()

{

int i=0;

//创建线程1

CreateThread(

NULL, // default security attributes

0, // use default stack size

ThreadProc1, // thread function

NULL, // argument to thread function

0, // use default creation flags

NULL); // returns the thread identifier

//创建线程2

CreateThread(

NULL, // default security attributes

0, // use default stack size

ThreadProc2, // thread function

NULL, // argument to thread function

0, // use default creation flags

NULL); // returns the thread identifier

//让主线程进入循环,主线程若退出,子线程1,2会被系统“杀死”

while(1)

{

printf("hello,this thread 0 \n");

//延时

for(i=0;i<200000000;i++)

{;}

}

}

以上就是关于关于C++多线程编程教学全部的内容,包括:关于C++多线程编程教学、用C语言写多线程程序、c语言中怎样创建多线程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10104808.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存