确定窗口消息队列深度
我们有一个应用程序,它使用窗口消息队列将数据从套接字传递到消费者 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Raymond Chen 在他的帖子“中对此进行了非常详细的回答,但是我们当我们开始每秒发布 10,000 条消息时遇到了问题”。
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".
没有一个好的方法可以做到这一点。 您可以做的一件事是积极清空消息队列并将它们放入您自己的队列中。 但是,这并不能解决你的问题。
我不想告诉你这一点,但你真的应该找到一种方法来处理你的套接字数据。 我认为您会发现其他一些机制比使用 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