更改 USERPostMessageLimit 的后果

5 winapi

我们的遗留应用程序之一严重依赖于PostThreadMessage()线程间通信,因此我们将注册表中的 USERPostMessageLimit 增加到超出正常的 10.000。

然而,MSDN 上的文档指出“这个限制应该足够大。如果您的应用程序超出了限制,则应该重新设计,以避免消耗如此多的系统资源。” [ 1 ]

谁能告诉我消耗太多系统资源到底是如何表现出来的?系统资源到底是什么?我可以以某种方式监视应用程序对系统资源的使用情况吗?任何信息都将非常有助于决定是否值得花费时间和精力来重新设计此应用程序。

Mar*_*mer 1

它所指的资源是线程用于接收/处理消息的资源。您可以使用任务管理器监视线程池大小和其他资源(查看“视图”->“选择列”)。如果使用者被资源锁定,它可以帮助您识别特定资源,查找即使在线程增加时也达到顶峰的资源计数。

然而; 如果您需要增加 USERPostMessageLimit,那么消息生产者只是使消息使用者超载;通过增加这个限制,你会加剧你的问题而不是解决它。将 USERPostMessageLimit 减少回默认值,如果您的消息生产者无法发布消息,请尝试在重试之前休眠,从而允许使用线程清除一些消息。