更改USERPostMessageLimit的后果

时间:2008-09-17 13:24:15

标签: winapi

我们的一个遗留应用程序在很大程度上依赖于PostThreadMessage()进行线程间通信,因此我们将注册表中的USERPostMessageLimit(方式)增加到正常的10.000以上。

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

任何人都可以告诉我,过多的系统资源是如何消耗的?究竟什么是系统资源?我可以以某种方式监视应用程序的系统资源使用情况吗?在决定是否值得花时间和精力重新设计此应用程序时,任何信息都非常有用。

1 个答案:

答案 0 :(得分:1)

它所引用的资源是线程用于接收/处理消息的资源。您可以监视线程池大小&使用Taskmanager的其他资源(查看View-> Select Columns)。如果消费者资源被锁定,它可以帮助您识别特定资源,查找即使在您的线程增加时资源数量也会增加。

然而;如果你需要增加USERPostMessageLimit,那么消息生产者只是重载消息使用者;通过增加此限制,您正在加剧您的问题而不是修复它。将USERPostMessageLimit减少回默认值,如果您的消息生成器无法发布消息,请在重试前尝试休眠,允许消费线程清除某些消息。