TIdSchedulerOfThreadDefault или TIdSchedulerOfThreadPool зачем использовать и что делать - PullRequest
0 голосов
/ 25 января 2019

Должен ли я использовать их с TIdTcpServer, и где они могут что-то улучшить в моем приложении?

Я спрашиваю это, потому что, возможно, они могут улучшить некоторые действия по скорости / ловкости на TIdTcpServer, так как я использую Очередь.

1 Ответ

0 голосов
/ 25 января 2019

TIdTCPServer запускает поток для каждого подключенного клиента. Этими потоками управляет TIdScheduler, назначенный свойству TIdTCPServer.Scheduler. Если вы не назначаете свой собственный планировщик, для вас создается внутреннее значение по умолчанию TIdSchedulerOfThreadDefault.

Разница между TIdSchedulerOfThreadDefault и TIdSchedulerOfThreadPool составляет:

  • TIdSchedulerOfThreadDefault создает новый поток при подключении клиента, а затем завершает этот поток при отключении клиента.

  • TIdSchedulerOfThreadPool поддерживает пул свободных потоков. Когда клиент подключается, поток удаляется из пула, если он доступен, в противном случае создается новый поток. Когда клиент отключается, поток помещается обратно в пул для повторного использования, если значение планировщика PoolSize не будет превышено, в противном случае поток завершается.

С точки зрения ОС, создание нового потока - дорогостоящая операция. Поэтому в целом использование пула потоков обычно предпочтительнее для повышения производительности, но за счет использования памяти и ресурсов для незанятых потоков, ожидающих использования.

Какой бы компонент вы не решили использовать, он не окажет большого влияния на работу сервера при обработке активных клиентов, а только на работу при подключении / отключении сокетов.

...