MFC消息队列限制

时间:2015-02-11 11:25:19

标签: c++ multithreading mfc

我对MFC线程中消息队列的大小限制的理解来自MSDN的PostThreadMessage页面上的解释。

https://msdn.microsoft.com/en-us/library/windows/desktop/ms644946%28v=vs.85%29.aspx

如上所述,默认限制为10000条消息。我试图准确理解这个限制是什么。我认为这是两件事之一。

情景A

我有一个处理消息的GUI。消息放入队列的速率大于将这些消息从队列中拉出并处理的速率。在这种情况下,消息会累积,最终队列中有10000条消息,另一条消息尝试加入队列,但随后失败。

情景B

我有一个处理消息的GUI。消息放入队列的速率低于将这些消息拉入队列并处理的速率。消息不会累积在队列中。但是在我的队列看到10000条消息之后,它变得毫无用处,因此我的消息队列的使用寿命有限。

我想的越多,答案应该是情景A ......但是发生了一些奇怪的事情......

1 个答案:

答案 0 :(得分:1)

来自链接文章:GetLastError在达到邮件限制时返回ERROR_NOT_ENOUGH_QUOTA。因此,每次尝试在队列填满时发送/发布消息都会失败,这就是全部。

通常,目标线程处理消息并将其从队列中删除。带有PeekMessage标志的PM_NOREMOVE允许处理邮件而不删除它。作为参考,PeekMessage函数:https://msdn.microsoft.com/en-us/library/windows/desktop/ms644943%28v=vs.85%29.aspx