Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > TIdThreadMgrPool и TIdThreadMgrDefault


Автор: Gnusss 11.2.2006, 00:06
Привет всем!

У компонентов Indy основаных на TIdPeerThread есть свойство ThreadMsg(Менеджер процессов) в который можно установить один из двух компонентов TIdThreadMgrPool или TIdThreadMgrDefault, так вот у меня возник вопрос чем они отличаются друг от друга.
Вот например у TIdThreadMgrPool есть свойство PoolSize что от него зависит?
Различаются ли задачи у этих компонентов или они полностью универсьльны?

Был бы очень блаодарен есть бы вы мне всё разяснили.

Автор: Snowy 11.2.2006, 11:46
Задача у них одна. Выполняют они ее по разному.
TIdThreadMgrDefault, как видно из названия, это стандартный менеджер, выполняющий стандартное управление тредами. Когда тред становится ненужным,менеджер посылает ему уведомление на уничтожение.
В отличие от него, TIdThreadMgrPool не уничтожает отработавшие треды.
Он складывает их в пул и потом, вместо создания нового треда, достает из пула старый.
Такой подход может быть полезен при очень частых разовых обращений. Таких, как HTTP сервер, когда клиент подключается, забирает информацию и отключается.
При такой ситуации пул помогает сэкономить время на созданиях и уничтожениях тредов.
Но,если нужно работать с постоянными, продолжительными соединениями, то лучше выбрать TIdThreadMgrDefault.

Цитата(Gnusss @ 11.2.2006, 00:06 Найти цитируемый пост)
Вот например у TIdThreadMgrPool есть свойство PoolSize что от него зависит?
Думаютеперь ты и сам сможешь ответить на этот вопрос.
Это кол-во тредов, которые не будут уничтожены, а будут повторно задействованы. Уничтожены будут только с закрытием сервера. Стоит помнить, что каждый тред кушает память. Так что этот параметр нужно выбирать оптимально, согласно предполагаемой нагрузке.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)