确定窗口消息队列深度

发布于 2024-07-23 02:09:40 字数 194 浏览 9 评论 0原文

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

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

We have an application that uses the window message queue to pass data from a socket to consumer HWNDs (at a rate of ~2100Hz). This application has worked for >2 years. Recently our application has started exhibiting problems where WM_TIMER is not being fired/executed by our application. I think this is due to the data being pumped into the message queue.

My question is there a way to determine how many pending messages are in the message queue for a given thread/HWND?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

装纯掩盖桑 2024-07-30 02:09:40

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

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

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

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

This is answered in really great detail by Raymond Chen in his post "but then we ran into problems when we started posting 10,000 messages per second".

The research team asked to meet with
the user interface team to help work
out their problems under load. They
outlined their design and explained
that it worked well at low data rates,
"but then we ran onto problems when we
started posting 10,000 messages per
second."

At that point, the heads of all the
user interface people just sat there
and boggled for a few seconds.

"That's like saying your Toyota Camry
has stability problems once you get
over 500 miles per hour."

从﹋此江山别 2024-07-30 02:09:40

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

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

福雷德克

There isn't a good way to do this. One thing you could do is aggressively empty the message que and put them in your own queue. But, this will not solve your problem.

I hate telling you this, but you should really find a way to process your socket data. I think you will find some other mechanism scales better, performs better, and is easier to debug than using the windows message queue for this.

Foredecker

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文