windows多線程編程的經驗
1) 不要在線程函數體內操作MFC控件,不要再線程裏面調用UpdateData函數更新用戶界面,而應該儘量採用發送消息的方式,在主線程的消息響應函數中操作控件;
2)不建議採用SendMessage往主線程發送消息,因爲它是同步的,阻塞的,可以考慮採用PostMessage代替;
3)線程退出時,儘量不要使用TerminateThread函數,而儘可能的讓線程自己退出;
4) 當線程退出時,必須先等待工作者線程退出,主線程才退出,但是在主線程裏面不要使用WaitForSingleObject或WaitForMultiObjects等待線程結束,因爲它可能造成死鎖,當主線程使用這兩個函數時,主線程就掛起了,尤其在第 (1), (2) 種情況下,工作者線程還在調用主線程裏面的資源,這樣造成死鎖;
5) 爲了防止退出死鎖的發生,儘量使用MsgWaitForMultipleObjects函數,因爲該函數等待時,可以等待線程句柄 有信號,而且還可以等待消息,不會造成死鎖;