windows多線程編程的經驗

 

windows多線程編程的經驗
1) 不要在線程函數體內操作MFC控件,不要再線程裏面調用UpdateData函數更新用戶界面,而應該儘量採用發送消息的方式,在主線程的消息響應函數中操作控件;


2)不建議採用SendMessage往主線程發送消息,因爲它是同步的,阻塞的,可以考慮採用PostMessage代替;


3)線程退出時,儘量不要使用TerminateThread函數,而儘可能的讓線程自己退出;


4) 當線程退出時,必須先等待工作者線程退出,主線程才退出,但是在主線程裏面不要使用WaitForSingleObject或WaitForMultiObjects等待線程結束,因爲它可能造成死鎖,當主線程使用這兩個函數時,主線程就掛起了,尤其在第 (1), (2) 種情況下,工作者線程還在調用主線程裏面的資源,這樣造成死鎖;


5) 爲了防止退出死鎖的發生,儘量使用MsgWaitForMultipleObjects函數,因爲該函數等待時,可以等待線程句柄 有信號,而且還可以等待消息,不會造成死鎖;
 

發佈了17 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章