天天看點

關于主線程和副線程之間的關系

(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);

}

繼續閱讀