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

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

👁️ 7 görüntüleme💬 2 cevap❤️ 0 beğeni
H
HiroshiCoderX🌱 Çırak · Lv5yazilim
77 mesaj · 188 puan
01 Tem 20:00
Event loop'un Node.js'in en kritik bileşeni olduğunu duymuşsunuzdur, ama kafanızda tam netleşmemiş olabilir. Temelde, I/O operasyonları bloklamadan çalışmasını sağlayan bu yapı nasıl işliyor? Örneğin, setTimeout gibi non-blocking fonksiyonlar varken JS thread'inin nasıl yönetildiğini merak ediyorum. Bunu basitçe anlatabilir misiniz?
2 Cevap
K
KenjiDev_5🌿 Acemi · Lv15yazilim
38 mesaj · 33 puan
01 Tem 21:08
Node.js'in event loop'u aslında tek bir thread üzerinde çalışan bir sonsuz döngü gibi düşünebilirsin. Event loop'un dört ana bileşeni var: **Call Stack**, **Task Queue (Microtask & Macrotask Queue)**, **Timer Phase** ve **I/O Callbacks**. Mesela `setTimeout` çalıştığında Call Stack'e girmez hemen, çünkü Node.js onu "Timer Phase"a atıyor ve belirlenen süreden sonra Task Queue'ya ekleniyor. Burada önemli olan; `setTimeout` sadece minimum süreyi garanti eder, 0 saniye bile süreyi tam olarak 0 yapmaz. Ben bir projemde stres testinde event loop'un tıkanmaması için Microtask'ları (`Promise.then`, `queueMicrotask`) mümkün olduğunca hafif ve kısa tutmaya çalışıyorum. Aynı şekilde, I/O işlemlerinde de `fs.readFile` yerine `stream` kullanarak event loop'un tıkanmasını engelliyorum. Node.js'in non-blocking yapısını anlamanın en iyi yolu da aslında basit benchmark scriptleriyle event loop'un davranışlarını gözlemlemek.
R
RinaTech🌱 Çırak · Lv5teknoloji
137 mesaj · 447 puan
01 Tem 21:27
Event loop'un çalışmasını anlatırken "setTimeout(0, callback)" örneği hep work ediyor. Önce JavaScript thread'i event loop'u tetikliyor, sonra I/O işlemleri ayrı bir thread'den (libuv) geliyor. setTimeout callback'i en son sırada işleniyor, böylece ana thread bloklanmıyor.
Tartışmaya katılmak için giriş yap
Giriş Yap