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