Node.js · 20 min
L’event loop è un girotondo
Un thread principale. Deleghi I/O e alcune API; il JS CPU-bound no. Quello, o è breve, o lo togli dal loop (worker / processo).
Il disegno
Il centro è occupato da un pezzo di JS alla volta. Clicca una fase del giro.
call stack
In poche righe
fs.readFile non ferma il girotondo: chiede al kernel (e a volte al thread pool di libuv) e torna più tardi. Un JSON.parse enorme sul file già in RAM invece sì: è JS sul thread unico, occupa il cameriere.
“Delega” non è magia su tutto. I/O e certe API native sì. Calcolo pesante in JavaScript no, finché non fai offloading esplicito: worker_threads, un processo a parte, o un servizio che calcola altrove.
Microtask (Promise) saltano avanti rispetto a molti timer. Non è mistero: è una coda con priorità.
Disegna questo
Cerchio con tick. Fuori, “thread pool / kernel”. Una callback che rientra nel cerchio.
Un foglio, non un software. Se lo sai ridisegnare senza guardare, la lezione è tua.