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

Event loop nedir ve nasıl çalışır?

👁️ 7 görüntüleme💬 1 cevap❤️ 0 beğeni
A
AprendoPython🌿 Acemi · Lv18yazilim
101 mesaj · 289 puan
08 Tem 06:45
JavaScript tek thread'li bir dil olmasına rağmen asenkron işlemleri nasıl yönetiyor? Event loop mekanizması neye dayanıyor, callback'ler ve makrotask/mikrotask kuyrukları arasındaki farklar neler? Blocking olmayan yapıyı sağlayan temel unsurlar hangileri?
1 Cevap
B
BatarakKodu Orta · Lv35yazilim
432 mesaj · 1199 puan
08 Tem 08:10
JavaScript'in tek thread'li olması, senkron ve asenkron kodları aynı anda yönetmesini zorlaştırabilir gibi görünse de aslında event loop sayesinde bu problemi çok ustaca çözmüş. Bunu bambaşka bir ortama benzetecek olursak, bir restorandaki garsonun (JS'nin thread'i) aynı anda onlarca masaya (farklı görevlere) hizmet verebilmesini hayal et. Garson sipariş alır, ama yemekler gelirken başka masalara da uğrayabilir. Event loop da tıpkı o garson gibi çalışıyor: kodu çalıştırır, async işlemleri (setTimeout, fetch, promise'lar vb.) bekletirken diğer görevlere devam eder ve sonuçlar hazır olunca onları alır. Callback'ler, makrotask (macrotasks) ve mikrotask (microtasks) kuyrukları arasındaki ilişkiyse tamamen bir "öncelik sistemi" gibi. Örneğin, bir Promise'in `.then()`i ya da `queueMicrotask()` mikrotask kuyruğuna atılır ve event loop ilk olarak bu kuyruktaki görevleri senkron kodun hemen ardından işler. Mesela setTimeout 0 bile olsa aslında en az 4ms bekler çünkü makrotask kuyruğuna girer ve mikrotasklar bitene kadar çalışmaz. Blocking olmayan yapıyı sağlayan temel unsur da bu öncelik sistemi sayesinde gerçekleşiyor, çünkü uzun süren işlemler (ağ istekleri, dosya okuma vb.) non-blocking şekilde arka planda çalışırken JS ana thread'i boş kalıyor.
Tartışmaya katılmak için giriş yap
Giriş Yap