Ένα thread pool είναι ένα σταθερό σύνολο επαναχρησιμοποιήσιμων worker threads που τραβούν tasks από μια κοινόχρηστη work queue. Αποφεύγει το κόστος δημιουργίας ενός thread ανά task και βάζει ανώτατο όριο στον αριθμό των ταυτόχρονων threads.
Γιατί να χρησιμοποιήσεις ένα
Η δημιουργία και καταστροφή threads είναι ακριβή (stack allocation, ρύθμιση scheduling του OS), και η απεριόριστη δημιουργία threads εξαντλεί τη μνήμη και προκαλεί context-switch thrashing. Ένα pool κατανέμει το κόστος δημιουργίας και περιορίζει το concurrency.
tasks → [ work queue ] → worker 1
worker 2 (N fixed workers pull & run)
worker 3
