TIdTCPServer
запускает поток для каждого подключенного клиента. Этими потоками управляет TIdScheduler
, назначенный свойству TIdTCPServer.Scheduler
. Если вы не назначаете свой собственный планировщик, для вас создается внутреннее значение по умолчанию TIdSchedulerOfThreadDefault
.
Разница между TIdSchedulerOfThreadDefault
и TIdSchedulerOfThreadPool
составляет:
TIdSchedulerOfThreadDefault
создает новый поток при подключении клиента, а затем завершает этот поток при отключении клиента.
TIdSchedulerOfThreadPool
поддерживает пул свободных потоков. Когда клиент подключается, поток удаляется из пула, если он доступен, в противном случае создается новый поток. Когда клиент отключается, поток помещается обратно в пул для повторного использования, если значение планировщика PoolSize
не будет превышено, в противном случае поток завершается.
С точки зрения ОС, создание нового потока - дорогостоящая операция. Поэтому в целом использование пула потоков обычно предпочтительнее для повышения производительности, но за счет использования памяти и ресурсов для незанятых потоков, ожидающих использования.
Какой бы компонент вы не решили использовать, он не окажет большого влияния на работу сервера при обработке активных клиентов, а только на работу при подключении / отключении сокетов.