【问题标题】:Determining Window Message Queue Depth确定窗口消息队列深度
【发布时间】:2010-10-30 13:46:17
【问题描述】:

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

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

【问题讨论】:

    标签: winapi message-queue postmessage


    【解决方案1】:

    Raymond Chen 在他的帖子“but then we ran into problems when we started posting 10,000 messages per second”中非常详细地回答了这个问题。

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

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

    “这就像说你的丰田凯美瑞 一旦你得到稳定性问题 时速超过 500 英里。”

    【讨论】:

      【解决方案2】:

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

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

      食客

      【讨论】:

      • 谢谢,这正是我所害怕的。在重新设计数据流之前,我只是想看看消息队列有多深,以验证我的问题出在那段代码中。
      猜你喜欢
      • 1970-01-01
      • 2010-09-12
      • 2017-07-22
      • 2011-11-05
      • 1970-01-01
      • 2021-09-10
      • 2022-01-09
      • 2021-07-21
      相关资源
      最近更新 更多