C++多线程实例(线程的建立—调度—正确结束)

来源:互联网 发布:js 字符串以标签分割 编辑:程序博客网 时间:2024/05/17 08:44

C++中的多线程编程时一个非常复杂的东西,使用过程中一定要注意线程的调度和结束。那么为什么要用多线程呢?举一个例子,界面里有个按钮,按钮按下后,这个操作需要非常长的时间才能完成,那么在操作未完成之前,会将界面卡死,无法进行其他操作,这就是需要多线程的原因,一个主线程维持界面的运行,其他的线程在后台运行,进行其他需要的操作。

首先,要定义线程句柄:

 

//线程句柄

    HANDLE hThreadRadar;

 

然后对线程进行声明:

//线程函数定义的声明

void RadarDataWriteThread();

 

 

编写线程函数的过程中,线程内部一般是while构成的死循环,其中ThreadRunFlag是一个自己定义的volatileBOOL类型的标志位,这个变量也可以不定义,但是为了控制进程的运行,方便进行线程的调度

 

//决定线程是否运行的Flag标志位

volatile BOOL ThreadRunFlag;

 

while(ThreadRunFlag )

{

       //里面写着你需要进行的操作

}

 

然后,在程序需要的位置开启线程:

//开启数据回放线程

        hThreadRadar= CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)RadarDataWriteThread,NULL,0,NULL);

        //关闭句柄占用

        CloseHandle(hThreadRadar);

开启完线程之后,立即关闭线程句柄,目的是进行资源释放,句柄关闭后,线程仍在运行,在程序关闭的代码中,需要结束所有的线程,一般是在on close或者on destroy中进行响应:

//结束所有线程

    TerminateProcess(GetCurrentProcess(),0);

0 0
原创粉丝点击