多线程使用的经典例子,线程是并发执行的,即使和进程也是同步进行,所以要线程执行完毕后再执行进程的其他代码,必须增加判断函数WaitForSingleObject(handle, INFINITE),无限等到直到线程执行完毕后程序才往下走。你也可以注释掉那两行代码,看看不增加判断函数多线程运行的效果!
#include<Windows.h>
#include<stdio.h>
DWORD WINAPI threadFun(void* lpParameter) {
for (int i = 0; i < 5; i++) {
printf("线程老爸我来了!\n");
}
return 0;
};
int main() {
DWORD threadID1;
HANDLE handle1;
DWORD threadID2;
HANDLE handle2;
printf("创建线程......\n");
handle1 = CreateThread(NULL, 0, threadFun, 0, 0, &threadID1);
handle2 = CreateThread(NULL, 0, threadFun, 0, 0, &threadID2);
if (handle1 && handle2) {
WaitForSingleObject(handle1, INFINITE);
WaitForSingleObject(handle2, INFINITE);
}
printf("\n进程老爸欢迎线程归来!\n");
system("pause");
return 0;
}