Пример из реальной жизни;
- Объект: Операционная система
- Разделы: Приложения
- Люди: Темы
У вас есть объект, там работают 12 человек. Есть 3 раздела этого объекта. Кухня, комнаты отдыха и охрана. Если вы не используете технику пула потоков, вот как это работает: все 12 человек будут стоять в комнате собраний, если новые клиенты приходят по объекту и просят о выполнении задач, тогда вы будете разделять людей по группам и отправлять их для выполнения своей работы. и вернитесь в конференц-зал. Но, прежде чем они приступят к своим обязанностям, есть подготовительная фаза. Они должны носить правильную форму, оборудовать определенные устройства и пройти к этому участку, закончить работу и вернуться. Таким образом, каждый раз, когда они заканчивают свою работу (нить заканчивается), им нужно возвращаться в комнату для собраний, раздевать форму, снимать оборудование и ждать следующей работы. Они относятся к созданию контекста потока, его распределению памяти и информации об отслеживании ОС.
Если вы используете пул потоков, то рано утром вы назначите 6 человек на кухню, 2 человека на уборную и 4 человека на охрану. Таким образом, они будут заниматься подготовкой только один раз в день. Даже если на кухне нет клиентов, эти 4 человека будут там, на холостом ходу, для любых предстоящих задач. Им не нужно возвращаться в конференц-зал, пока кухня не закроется (приложение заканчивается). Эти 4 человека находятся в пуле приложений Kitchen и готовы к быстрому обслуживанию. Но вы не можете обещать, что они работают весь день, потому что кухня может время от времени простаивать. Та же логика применима и к уборным, и к безопасности.
В первом сценарии вы не тратите ни одного потока на выполнение какой-либо задачи, НО потребуется много времени для подготовки каждого отдельного потока для каждой задачи. Во втором случае вы подготавливаете потоки заранее, поэтому вы не можете гарантировать, что будете использовать все потоки для всех задач, но ОС в основном оптимизирует его, поэтому вы можете смело полагаться на него.