#include <iostream>#include <windows.h>// 线程是一个可等待对象,任何一个可等待对象都存在两种状态,在特定的时候会触发// 相应的信号,例如线程在结束的时候,会将内核对象置为有信号状态// 通过等待函数,通常是 WaitForSingleObject 可以等待一个可等待对象,如果// 对象处于有信号状态,这个函数会直接返回,否则会阻塞程序的执行// 线程的回调函数,创建线程的时候被用作线程的起始位置DWORD CALLBACK WorkerThread(LPVOID Paramater){ // 作为一个被创建的线程,当主线程[main所在的线程]退出的时候,这些线程无论 // 有没有执行完毕,都会跟着退出 for (int i = 0; i < 100000; ++i) printf("WorkerThread: %d\n", i); return 0;}int main(){ // 在主线程中使用函数 CtreateThread 创建一个其它线程,并等待线程执行完毕后退出 HANDLE Thread = CreateThread(NULL, 0, WorkerThread, NULL, 0, NULL); // 如果线程创建成功,就等待线程执行完毕,否则直接退出,函数的第一个参数是要等待的 // 对象,第二个参数是等待的时长,只有两种情况下函数会返回,第一个是对象等待成功, // 第二个是等待超时,超过了指定的毫秒数,对象还没有信号 if (Thread) WaitForSingleObject(Thread, INFINITE); return 0;}