1) 不要在線程函數體內操作MFC控件,不要再線程里面調用UpdateData函數更新用戶界面,而應該盡量采用發送消息的方式,在主線程的消息響應函數中操作控件;
2)不建議采用SendMessage往主線程發送消息,因為它是同步的,阻塞的,可以考慮采用PostMessage代替;
3)線程退出時,盡量不要使用TerminateThread函數,而盡可能的讓線程自己退出;
4) 當線程退出時,必須先等待工作者線程退出,主線程才退出,但是在主線程里面不要使用WaitForSingleObject或WaitForMultiObjects等待線程結束,因為它可能造成死鎖,當主線程使用這兩個函數時,主線程就掛起了,尤其在第 (1), (2) 種情況下,工作者線程還在調用主線程里面的資源,這樣造成死鎖;
5) 為了防止退出死鎖的發生,盡量使用MsgWaitForMultipleObjects函數,因為該函數等待時,可以等待線程句柄 有信號,而且還可以等待消息,不會造成死鎖;
posted on 2011-08-15 10:46
水 閱讀(1130)
評論(0) 編輯 收藏 引用 所屬分類:
vc 、
Windows開發