Un thread pool è un insieme fisso di worker thread riutilizzabili che prelevano task da una coda di lavoro condivisa. Evita il costo di creare un thread per ogni task e limita il numero di thread concorrenti.
Perché usarne uno
Creare e distruggere thread è costoso (allocazione dello stack, setup dello scheduling dell'OS), e la creazione illimitata di thread esaurisce la memoria e provoca thrashing di context switch. Un pool ammortizza il costo di creazione e limita la concorrenza.
task → [ coda di lavoro ] → worker 1
worker 2 (N worker fissi prelevano ed eseguono)
worker 3
