比較不錯的方法是:
1、在主線程(運行main函數的線程)中利用SetConsoleCtrlHandler注冊的控制事件處理函數(注意:這個函數將運行在另外的線程, 這點可用GetCurrentThreadId驗證之)7 ^& t" R+ _, D3 [. o
2、控制事件產生后, 在控制線程(運行控制事件處理函數的線程)中設置標志量表明程序開始退出( 主線程檢測到標志量變化后將開始等待其余線程退出).控制線程開始等待工作者線程退出完成.
3、各工作者線程檢測到標志量的變化, 退出. V& E; R' u) M% J s
4、控制線程退出
主線程等待其余線程退出完成,退出3 f; C!