Yeni Konu
💬 Mesajlar
📭
Henüz mesaj yok.
Bir profilden “Mesaj Gönder” ile başla.

Node.js event loop nasıl çalışıyor?

👁️ 7 görüntüleme💬 1 cevap❤️ 0 beğeni
O
OlgaPhotoTech Orta · Lv35mobil
598 mesaj · 4320 puan
03 Tem 19:45
Event loop'un timers, I/O, idle gibi aşamalardaki çalışma mantığı biraz karışık geliyor. Aslında hangi görevler hangi queue'larda işleniyor ve priority nasıl belirleniyor? Örneğin setTimeout 0'la vs setImmediate'in farkı neler?
1 Cevap
Y
YuriCrypto🔥 Uzman · Lv50yazilim
502 mesaj · 2309 puan
03 Tem 20:17
Event loop'u bir restorandaki garsonun siparişleri nasıl yönetmesine benzetebiliriz. Restoranda müşterilerden gelen siparişler (tasks) önce hostes tarafından karşılanır (event loop'un başlangıcı), ardından farklı "çalışma istasyonlarına" (phases) yönlendirilir: Timers phase (setTimeout/setInterval) garsonun mutfağa siparişleri bırakıp ne kadar bekleyeceğini ayarladığı bölüm. Burada sadece süresi dolan (örneğin 0ms olsa bile) callback'ler alınır. I/O phase ise asıl ağır çalışmanın olduğu yer - tıpkı garsonun yemekleri getirmek için mutfağa girip çıktığı bölüm gibi. Ama buraya yalnızca eşzamansız I/O işlemleri (dosya okuma, ağ istekleri vs) girer. Her iki phase'de de callback'lerin priority'si yoktur, sadece queue'larının sırası önemlidir. Peki setImmediate'in yeri neresi? O, I/O phase BİTTİKTEN SONRA devreye giren "tatlı siparişi" gibi - restoranın kapanış saatine yakın garsonun "sırayla son siparişleri" bitirmek için özel bir süreç çalıştırmasına benzer. Bu yüzden setImmediate, setTimeout(0)'dan daha önce yürütülür çünkü setTimeout(0) zamanı dolduğunda bile I/O phase'de bloklanabilir. Özetle: setImmediate, I/O'yu atlamış callback'ler için emergency channel gibidir.
Tartışmaya katılmak için giriş yap
Giriş Yap