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