1 #include <stdio.h> 2 #include <windows.h> 3 4 5 DWORD WINAPI ThreadProc_txl(LPVOID lpParam) 6 { 7 int i = 0 ; 8 while (i < 20) 9 { 10 printf("I am from a thread,count = %d\n",i++); 11 } 12 return 0; 13 } 14 15 int main(int argc,char * argv[]) 16 { 17 HANDLE hThread; 18 DWORD dwThreadld; 19 /* 20 SECURITY_ATTRIBUTES sa; 21 sa.nLength = size(sa), 22 sa.lpSecurityDescriptor = NULL, 23 sa.blnheritHandle = TRUE, //设置线程可以被继承,时,此变量的值要设置为True, 24 */ 25 26 /************************************************************************/ 27 /* 只有当线程运行结束时,线程才变为受信状态 */ 28 /************************************************************************/ 29 30 31 hThread = ::CreateThread( 32 NULL, //默认NULL安全属性,是不可被继承的, 如果设置可以被继承,必须填入SECURITY_ATTRIBUTES结构类型的数据,可以为&sa 33 NULL, //默认线程堆栈大小 34 ThreadProc_txl,//线程入口地址函数(执行线程的函数,也可以理解为线程工作函数) 35 NULL, //传递给线程工作函数的参数, 36 0, //0:指定线程创创建后立即运行,CREATE_SUSPENDED 表示线程创建以后被被挂起,可以调用ResumeThread函数恢复运行 37 &dwThreadld);//返回线程的ID号 38 printf("Now another thread has been created.ID = %D\N",dwThreadld); 39 40 /************************************************************************/ 41 /* WaitForSignleObject函数 42 1.在等待的hThread句柄所代表的线程变为受信状态 43 2.第二个参数(以毫秒为单位)所指定的等待时间已过,INFINITE表示无线等待时间*/ 44 /************************************************************************/ 45 ::WaitForSingleObject(hThread,INFINITE);//无线等待时间,直到线程执行结束 46 ::CloseHandle(hThread); 47 return 0; 48 }