首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 多線程:主線程退出導致子線程未執行

     編輯:程式設計疑難解答

問題代碼

HANDLE Thread = CreateThread(NULL, 0, Thread_accept, NULL, 0, NULL);
return 0; // 主線程立即結束,進程終止,子線程被強制銷毀

原因

Windows 進程以主線程返回為結束標誌,主線程結束時系統會終止所有子線程,不等待其執行完畢。

解決方案

  1. 等待子線程結束:
    WaitForSingleObject(Thread, INFINITE);
    CloseHandle(Thread);
    
  2. 事件同步:子線程完成設置事件,主線程等待事件。
  3. 全局標誌位:子線程設置 g_done=1,主線程輪詢等待(不推薦)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved