开发环境:vs 2008; 32位控制台程序;
所需头文件:Windows.h
CreateThread: Win32提供的创建线程最基础的API,用于在主线程上创建一个线程。返回一个HANDLE句柄(内核对象)。
实例1:
#include "stdafx.h"
#include <Windows.h>
DWORD WINAPI getMsg(LPVOID lpParam)
{
while (1)
{
printf("执行子线程!\n\n");
}
return 0;
}
int main()
{
DWORD threadID;
HANDLE hThread;
hThread = CreateThread(NULL,0,getMsg,NULL,0,&threadID);
printf("执行主线程1\n\n");
//Sleep(1);
printf("执行主线程2\n\n");
return 0;
}
执行结果:
实例2:
#include "stdafx.h"
#include <Windows.h>
DWORD WINAPI getMsg(LPVOID lpParam)
{
while (1)
{
printf("执行子线程!\n\n");
}
return 0;
}
int main()
{
DWORD threadID;
HANDLE hThread;
hThread = CreateThread(NULL,0,getMsg,NULL,0,&threadID);
printf("执行主线程1\n\n");
Sleep(1);
printf("执行主线程2\n\n");
return 0;
}
实例1和实例2对比可以看到主线程的执行顺序。
实例1中进行调试,执行到主线程1(还未执行),跳到了创建的子线程,(子线程还未执行)然后执行主线程1,然后跳到子线程执行子线程,依次类推。
实例2中,执行主线程1后,主线程1休眠 1ms,这段时间内一直执行子线程。