(1)主線程結束整個程序并不一定結束。網上雖然都說主線程結束、整個程序結束這個說法是錯誤的。
(2)程序結束的标緻是所有線程都結束了,程序就結束。
(3)其實在寫main函數的時候,函數return以後其實後面還有一個ExitProcess函數,這樣就是的整個程序結束。
(4)如果主線程結束,雖然你在main中寫入得了ExitThread,但是後面的main函數以後的東西不回執行的,要等到所有線程結束了,然後最後調用ExitProcess的。
下面的一個例子來證明,主線程結束,整個程序不一定結束。
DWORD __stdcall ThreadProc(void * pVoid)
{
int index = 0;
while (1)
{
WaitForSingleObject((HANDLE)0xFFFFFFFF, 1000);
cout << "現在的index是多少:"<< index <<endl;
index ++;
}
return 0;
}
void main(int argu , char * arg[])
{
HANDLE hThread;
DWORD threadId;
int functionData = 10;
hThread = CreateThread(NULL, 0,ThreadProc,&functionData, 0,&threadId);
WaitForSingleObject((HANDLE)0xFFFFFFFF, 5000);
cout << "退出主線程"<<endl;
ExitThread(0);
}