《Win32多线程程序设计》–Jim Beveridge & Robert Wiener
“等待某个什么东西”是线程常常需要做的事。等待是线程的“必要之恶”。
如果你没有等待线程结束就莽撞地结束程序,线程会被系统强制结束掉——在它完成它的工作之前。
由于让线程停工是操作系统的责任,很合理地我们会认为操作系统也有责任让其他线程知道某个线程停工了。
Sleep()
这个函数要求操作系统中止线程动作,直到渡过某个指定时间之后才恢复。
#include <stdio.h>
#include <Windows.h>
DWORD WINAPI Thread(void *arg) {
// doing something
return 0;
}
int main(void) {
HANDLE hThread = CreateThread(NULL, 0, Thread, NULL, 0, NULL);
Sleep(?); // 不可能事先知道要等待Thread多久
CloseHandle(hThread);
return 0;
}
GetExitCodeThread()轮询检查
使用 GetExitCodeThread() 可以决定一个线程是否还在执行。
#include <stdio.h<