Exemplo da vida real;
- Instalação: Sistema operacional
- Seções: Aplicações
- Pessoas: Threads
Você tem uma instalação lá 12 pessoas estão trabalhando. Existem 3 seções desta instalação. Cozinha, banheiros e segurança. Se você não usar a técnica de pool de encadeamentos, é assim que funciona: todas as 12 pessoas estarão em pé em uma sala de reuniões; se novos clientes chegarem e solicitarem tarefas, você separará as pessoas em grupos e as enviará para fazer seu trabalho. e volte para a sala de reuniões. Mas, antes que cumpram seu dever, há uma fase de preparação. Eles precisam usar uniforme correto, equipar determinados dispositivos e caminhar até essa seção, terminar o trabalho e voltar. Assim, toda vez que terminam seu trabalho (fim de linha), eles precisam voltar para a sala de reuniões, despir o uniforme, retirar o equipamento e aguardar o próximo trabalho. Referem-se à criação de contexto de encadeamento, é alocação de memória e informações de rastreamento pelo SO.
Se você estiver usando o pool de threads, no início da manhã, designará 6 pessoas para a cozinha, 2 para o banheiro e 4 para a segurança. Então, eles só farão sua preparação uma vez por dia. Mesmo se não houver clientes na cozinha, essas quatro pessoas estarão lá, ociosas, para quaisquer tarefas futuras. Eles não precisam voltar para a sala de reuniões até a cozinha fechar (o aplicativo termina). Essas 4 pessoas estão no pool de aplicativos de cozinha e prontas para servir rapidamente. Mas você não pode prometer que eles estão trabalhando o dia todo, pois a cozinha pode ficar ociosa de vez em quando. A mesma lógica se aplica a banheiros e segurança também.
No primeiro cenário, você não desperdiça nenhum encadeamento para nenhuma tarefa, mas levará um bom tempo para preparar cada encadeamento único para cada tarefa. No segundo, você prepara os threads com antecedência, para não garantir que estará usando todos os threads para todas as tarefas, mas o SO faz uma ótima otimização, para que você possa confiar com segurança.