2

我们有一个应用程序使用窗口消息队列将数据从套接字传递到消费者 HWND(速率约为 2100Hz)。此应用程序已经工作了 2 年以上。最近,我们的应用程序开始出现 WM_TIMER 没有被我们的应用程序触发/执行的问题。我认为这是由于数据被泵入消息队列。

我的问题是有没有办法确定给定线程/HWND 的消息队列中有多少待处理消息?

4

2 回答 2

6

Raymond Chen 在他的帖子中非常详细地回答了这个问题,“但是当我们开始每秒发布 10,000 条消息时,我们遇到了问题”。

研究团队要求与用户界面团队会面,以帮助解决他们在负载下的问题。他们概述了他们的设计并解释说它在低数据速率下运行良好,“但是当我们开始每秒发布 10,000 条消息时,我们遇到了问题。”

那时,所有用户界面的负责人只是坐在那里,愣了几秒钟。

“这就像说你的丰田凯美瑞在时速超过 500 英里时出现稳定性问题。”

于 2009-06-02T02:45:07.957 回答
0

没有好的方法可以做到这一点。您可以做的一件事是积极清空消息队列并将它们放入您自己的队列中。但是,这并不能解决您的问题。

我讨厌告诉你这个,但你真的应该找到一种方法来处理你的套接字数据。我认为您会发现其他一些机制比使用 Windows 消息队列更容易扩展、执行更好并且更容易调试。

福特克

于 2009-06-02T02:35:21.890 回答