我想仅与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. 线程/同步
- 2. 线程同步
- 3. 线程同步
- 4. 线程同步
- 5. 线程同步
- 6. 线程同步
- 7. 线程同步
- 8. 线程同步
- 9. 从WinAPI的线程
- 10. 使用线程中的同步
- 11. 使用事件来同步线程
- 12. 使用.NET同步COM线程
- 13. 多线程同步
- 14. 线程和同步
- 15. Java同步线程
- 16. 线程和同步
- 17. 线程同步:C
- 18. 线程vs同步
- 19. iphone线程同步
- 20. Boost线程同步
- 21. 线程:同步块
- 22. 跨线程同步
- 23. GraphStream线程同步
- 24. C++:线程同步
- 25. C#线程同步
- 26. Java线程同步
- 27. Python线程同步
- 28. .NET线程同步
- 29. CUDA:同步线程
- 30. Java线程“同步”
没有代码示例,你的Q不清楚。自动取款机我相信你不正确地使用SC - 你需要在每个线程中输入CS,而不是主要。 – Maximus 2013-02-20 06:16:57
正如@Maximus所暗示的,如果你的日志记录全部在你的窗口中,那么它就全部在同一个线程中。 – HerrJoebob 2013-02-20 07:45:55