|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.07.2013, 19:31 | #1 |
Форумчанин
Регистрация: 04.06.2010
Сообщений: 212
|
Поток vs пул потоков
Еще раз здравствуйте
Я читал Msdn про многопоточность и не понял отличия пула токов от просто потоков, кроме как понял, что пул потоков используется для решения простых задач а поток для более сложных. Видимо не достаточно рассказано, чем отличается пул потока от потока. т.е. с точки зрения .net меня интересуют два класса: ThreadPool и Thread
мой сайт http://wanes101.16mb.com/myblog
|
10.07.2013, 19:45 | #2 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Суть пула в том, что там хранятся уже готовые потоки. Создание потока - очень и очень затратная операция. Попробуйте создать в цикле 20 Thread'ов и замерьте время. Thread реально создает новый поток, но с возможностью его полного контроля (Abort, например).
Плюс к тому, потоки из пула всегда background. Приложение закрывается, когда все НЕ-background потоки завершились. Фоновые просто убиваются автоматически, без возможности корректного завершения. То есть, пул нужно использовать для маленьких под-задач, Thread для полноценной, долгоживущей сущности. Например если в компьютерной игре один поток рисует, а другой просчитывает физику, то логично сделать их Thread. Ну и вообще говоря, пул потоков ограничен. Никто не гарантирует, что запущенная задача начнет выполняться там сразу, потому что все его потоки могут уже быть заняты другими задачами. В таком случае важная задача может простоять в очереди непозволительно много времени, чего не произойдет с Thread'ом.
Изобретатель велосипедов
|
10.07.2013, 20:38 | #3 |
Форумчанин
Регистрация: 04.06.2010
Сообщений: 212
|
Вы хорошо рассказали о области их применения, но всеж что представляет пул не очень.
Я так понимаю: пулы это потоки которые выполняются при освобождении процесса от потоков, и они более быстро инициируют и освобождают ресурсы?
мой сайт http://wanes101.16mb.com/myblog
|
10.07.2013, 20:59 | #4 | |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Цитата:
Пул - это хранилище заранее заготовленных объектов. В данном случае потоков. Потоки из пула создаются CLR и в вашей программе не требуется никаких операций по их созданию. Это главное отличие и преимущество: вы просто отдаёте пулу некоторую задачу, а он выделяет под неё свободный поток. Когда задача выполнена, поток засыпает и пул может скинуть на него следующую ожидающую задачу. В остальном потоки работают так же как "обычные". По работе с ресурсами отличие одно: когда завершились все основные потоки вашей программы, потоки из пула автоматически закрываются, при этом нет никакой возможности их заставить выполнить корректное завершение (освободить ресурсы). Именно поэтому для критических задач пул лучше не использовать.
Изобретатель велосипедов
|
|
10.07.2013, 21:15 | #5 |
Форумчанин
Регистрация: 04.06.2010
Сообщений: 212
|
А теперь все понял спасибо
мой сайт http://wanes101.16mb.com/myblog
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
IOCP и Пул потоков | Neobrat | Работа с сетью в Delphi | 0 | 24.07.2012 13:10 |
Пул потоков | nikol_ | Общие вопросы Delphi | 18 | 26.01.2012 12:07 |
Поток. Не получается создать поток. Выдает ошибки при запуске | bigory | Общие вопросы по Java, Java SE, Kotlin | 3 | 23.09.2010 00:40 |
Дескрипторы потоков - Для каждого элемента списка необходимо создать поток, выполняющий требуемые функции | kdv0403 | Общие вопросы Delphi | 2 | 09.06.2007 11:12 |