STA線程同步的最佳做法是什麼?MsgWaitForMultipleObjectsEx死鎖MFC應用程序中的主STA線程
我有一個基於對話框的MFC應用程序與兩個STA線程:主要和第二個。我在主UI線程中創建了COM對象。
我從第二個線程調用COM接口。在主線程中,爲了確保第二個線程在主線程繼續之前完成,我使用一個循環來等待線程。此循環循環調用MsgWaitForMultipleObjectsEx(timout = 500)。
我立即陷入了等待的僵局。然後我意識到MFC消息泵AfxInternalPumpMessage()只能幫助阻止調用,但對死鎖情況根本沒有幫助。
然後我將Peek/Translate/DispatchMessage代碼添加到等待循環中,然後全部工作。
現在,似乎沒有手動編碼Peek/Translate/DispatchMessage循環,你不能做STA線程同步嗎?任何等待電話都會使您陷入僵局。那麼什麼是同步STA線程的最佳或標準方式?
謝謝!
爲什麼你需要調用MsgWaitForMultipleObjectsEx?在第二個線程中,爲什麼不在第一個線程完成時發佈消息? – wj32