LIFO Win32消息循环



是否可以巧妙地使用PostMessageGetMessage等对LIFO消息进行排队(假设发送方和接收方消息循环都配合),或者我需要推出自己的解决方案?

如果你想知道这个用例,那就是图标加载。您总是希望首先加载最近请求的图标。:)

不,你需要自己滚动-windows消息队列有一个最大大小,如果它满了,从COM、DDE到用户交互,所有的事情都会出错。

应该使用由关键部分保护的deque(或类似的),而不是使用线程队列。

  • http://msdn.microsoft.com/en-us/library/windows/desktop/ms644944(v=vs.85).aspx

    每个消息队列最多只能发送10000条消息。这个限制应该足够大。如果您的应用程序超出了限制,则应该重新设计它,以避免消耗太多系统资源。

另请参阅可能出错的示例:

  • 0x80010100:系统调用失败";异常,ContextSwitchDeadlock

最新更新