2008-09-17 2 views
4

Одно из наших устаревших приложений в значительной степени зависит от PostThreadMessage() для межпоточной связи, поэтому мы увеличили USERPostMessageLimit в реестре (пути) за пределами обычного 10.000.Последствия изменения USERPostMessageLimit

Однако в документации по MSDN указано, что «этот предел должен быть достаточно большим. Если ваше приложение превышает лимит, его следует перепроектировать, чтобы избежать потребления стольких системных ресурсов». [1]

Может ли кто-нибудь просветить меня о том, как именно потребляет слишком много системных ресурсов? Что такое системные ресурсы? Могу ли я каким-то образом контролировать использование приложениями системных ресурсов? Любая информация будет очень полезна при принятии решения о том, стоит ли затрачивать время и усилия на редизайн этого приложения.

+0

Я думаю об использовании того же решения. У вас были проблемы? – 2016-09-02 14:17:13

ответ

1

Ресурсы, на которые они ссылаются, - это те, которые используются потоками для приема/обработки сообщений. Вы можете контролировать размер пула потоков & другими ресурсами, используя Taskmanager (посмотрите на View-> Select Columns). Это может помочь вам определить конкретный ресурс, если потребитель заблокирован ресурсом, ищите количество ресурсов, которое достигает максимума даже в то время, когда ваши потоки увеличиваются.

Однако; если вам нужно увеличить USERPostMessageLimit, тогда производитель сообщений просто перегружает пользователя сообщения; увеличивая этот предел, вы усугубляете свою проблему, не исправляя ее. Уменьшение USERPostMessageLimit возвращается к умолчанию, и если ваш производитель сообщений не может опубликовать сообщение, попробуйте спать перед повторной попыткой, чтобы поток потребления мог очистить некоторые сообщения.

+0

Можете ли вы указать, какая из «Столбцов страницы процесса» из Диспетчера задач (Ручки, Нити, Пользовательские объекты и т. Д.) Мы должны отслеживать и сравнивать с этим лимитом в 10 000? Я протестировал программу, которая сбой с «Недостаточно квоты для обработки этой команды» из-за этого ограничения, но я не видел ни одного из столбцов, которые выросли до 10 000. Может ли какой-либо из этих столбцов точно указать, сколько из них находится в очереди? – skeletank 2016-08-05 21:31:53

Смежные вопросы