aslinda js’in browserdan disari cikartilmis hali
Node.js’in kalbi event looptur.
Event loop tek thread üzerinde sürekli döner ve şunları yapar:
- Call Stack boş mu?
- Task Queue’de bekleyen iş var mı?
- Bekleyen callback varsa sıradaki job’u al ve çalıştır.
Böylece “tek thread” olmasına rağmen bloklamadan çok iş yapabiliyor gibi görünür.
- Sen bir async iş (ör.
setTimeout
, fs.readFile
, http request
) çağırdığında bu iş main thread’de yapılmaz.
- libuv devreye girer →
- I/O işlemleri (dosya okuma, network isteği vb.) OS’nin async API’lerine atanır.
- CPU yoğun şeylerde (crypto, sıkıştırma gibi) libuv’ün thread poolu (varsayılan 4 thread) kullanılır.