我想僅與WINAPI調用同步線程,但我沒有成功。 只要我的WNDPROC收到消息,情況就是LOG日誌和日期活動。 問題是我的WNDPROC需要寫入日誌,因爲寫入文件需要時間,所以它會失控。我試圖在WNDPROC開始時立即進入關鍵部分,並在寫入日誌完成後立即離開關鍵部分,但沒有運氣。如何讓他們相互等待?使用WINAPI同步線程
0
A
回答
1
不要等待 - 排隊。
Windows消息太小了(本身:),將整個消息複製到生產者 - 消費者隊列是一種合理的方法。你可以提出你自己的隊列類,或者你也許可以使用PostThreadMessage()API接收到的信息複製和排隊到記錄器線程:
http://msdn.microsoft.com/en-gb/library/windows/desktop/ms644946%28v=vs.85%29.aspx
與PTM(的障礙)是唯一的消息數據被複制並排隊 - 沒有時間/日期。在獲取消息複製時,時間/日期必須添加到記錄器線程中。檢查你的要求,看看這是否可以接受。如果沒有,您將不得不使用包含Windows消息和日期/時間成員的不同「消息」結構。
隊列將UI線程從可能冗長的磁盤日誌記錄寫入操作中隔離出來,並且允許額外的靈活性來合併懶惰寫入和其他此類優化(如果需要)。
+0
這將工作得很好,非常感謝你! – 2013-02-20 18:32:42
相關問題
- 1. WinAPI線程池
- 2. C++ winapi線程
- 3. 線程同步
- 4. 線程同步
- 5. 線程同步
- 6. 線程同步
- 7. 線程/同步
- 8. 線程同步
- 9. 同步線程
- 10. 線程同步
- 11. 線程同步
- 12. 多線程,線程同步
- 13. 線程同步VS進程同步
- 14. 使用WinAPI的多線程。計算PI
- 15. 從WinAPI的線程
- 16. 使用.NET同步COM線程
- 17. 使用AutoResetEvent同步兩個線程
- 18. 使用AutoResetEvent同步.NET線程池
- 19. 使用兩個隊列同步線程
- 20. 使用事件來同步線程
- 21. 使用tbb線程之間的同步
- 22. 使用線程中的同步
- 23. 在UI線程上同步使用DownloadStringTaskAsync
- 24. Python線程同步
- 25. 線程和同步
- 26. 線程和同步
- 27. .NET線程同步
- 28. 同步:ImageDownloader線程
- 29. 線程vs同步
- 30. Python線程同步
沒有代碼示例,你的Q不清楚。自動取款機我相信你不正確地使用SC - 你需要在每個線程中輸入CS,而不是主要。 – Maximus 2013-02-20 06:16:57
正如@Maximus所暗示的,如果你的日誌記錄全部在你的窗口中,那麼它就全部在同一個線程中。 – HerrJoebob 2013-02-20 07:45:55