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