Qt中有自己的多线程工具QThread,但是每次都需要继承QThread实现一个自己的类,然后重载其中的run()成员函数,工作量比较大。有的时候只需要执行一个运行时间长的函数来更新GUI及后台的一些数据,如果直接写在GUI更新所在的主线程中,就会容易导致线程假死。因此,对于运行时间比较长的代码,我们需要创建新的线程来执行它们。使用QThread是一种方法,另外一种,对于Windows平台下的开发,可以用Windows api里的CreateThread函数。
CreateThread的一个简单例子如下:
//最简单的创建多线程实例
#include <stdio.h>
#include <windows.h>
//子线程函数
DWORD WINAPI ThreadFun(LPVOID pM)
{
printf("子线程的线程ID号为:%d\n子线程输出Hello World\n", GetCurrentThreadId());
return 0;
}
//主函数,所谓主函数其实就是主线程执行的函数。
int main()
{
printf(" 最简单的创建多线程实例\n");
printf(" -- by MoreWindows( http://blog.csdn.net/MoreWindows ) --\n\n");
HANDLE handle = CreateThread(NULL, 0, ThreadFun, NULL, 0, NULL);
WaitForSingleObject(handle, INFINITE);
return 0;
}
下面来细讲下代码中的一些函数
第一个 CreateThread
函数功能:创建线程
函数原型:
HANDLEWINAPICreateThread(
LPSECURITY_ATTRIBUTESlpThreadAttributes,
SIZE_TdwStackSize,
LPTHREAD_START_ROUTINElpStartAddress,