Установка приоритета ниже для прослушивающего потока не решит вашу проблему. Весь поток слушателей делает это прослушивание, которое не является задачей с интенсивным использованием ЦП. Пока не придет соединение, эта нить вообще ничего не делает. Вы можете подтвердить это с помощью инструмента, такого как Process Explorer; Я думаю, что это может показать использование процессора потоком.
Установка приоритета ниже может привести к тому, что ваш сервер появится less отзывчивый, потому что, когда придет соединение, поток, прослушивающий это соединение, будет работать с более низким приоритетом и не сможет немедленно работать с соединением. Клиенту придется подождать немного дольше, прежде чем ваш сервер начнет обрабатывать свой запрос.
Запросы не обрабатываются в потоке слушателя. Нить прослушивателя делегирует большую часть работы другим потокам. Если у вас есть только одна привязка TCP, у вас будет только один поток прослушивателя, но вы можете обрабатывать многие параллельные соединения. Каждое соединение будет обрабатываться отдельной нитью, несмотря на наличие только одного слушателя.
В любом случае, вы можете изменить приоритет, обработав событие OnBeforeListenerRun
объекта сервера. Он получает ссылку на TIdThread
, который представляет поток слушателя, поэтому вы можете присвоить его значение Priority
. Кроме того, у вас есть исходный код, поэтому вы можете войти и изменить определение константы tpListener
в IdGlobalCore.pas. Код использует это значение, а не tpHighest
напрямую.
Это похоже на то, что я ищу. Я должен подождать до завтра, пока я не смогу его протестировать. Я оставлю здесь комментарий. Спасибо, в любом случае! – jpfollenius
+1 Я только что протестировал его, и он отлично работает! Еще раз спасибо за вашу помощь! – jpfollenius