更改USERPostMessageLimit的后果

时间:2020-03-05 18:58:51  来源:igfitidea点击:

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

但是,有关MSDN的文档指出:"此限制应足够大。如果应用程序超出了限制,则应重新设计它以避免消耗太多的系统资源。" [1]

有人能启发我如何准确地消耗太多的系统资源吗?系统资源到底是什么?我可以以某种方式监视应用程序对系统资源的使用吗?任何信息对于确定是否值得花费时间和精力重新设计此应用程序都是非常有帮助的。

解决方案

回答

它所指的资源是线程用于接收/处理消息的资源。我们可以使用Taskmanager监视线程池大小和其他资源(查看"视图"->"选择列")。如果使用方被资源锁定,它可以识别特定资源,即使线程不断增加,也可以查找仍在使用的资源计数。

然而;如果我们需要增加USERPostMessageLimit,那么消息生产者只会使消息使用者超载;通过增加此限制,问题更加复杂,无法解决。将USERPostMessageLimit还原为默认值,并且如果消息生产者无法发布消息,请在重试之前尝试使其休眠,从而允许使用线程清除一些消息。