Focus mode
Giriş bölümümüzde Node.js'in bize sağlamış olduğu Javascript çalışma ortamı yapısı üzerine konuştuk. Bu bölümde ise ana konumuz asenkron Javascript ve asenkron çalışmanın Node.js açısından önemi. Önce senkron ve asenkron kavramlarına bakalım.
Senkron programlama en basit tanımıyla işlemlerin sırasıyla yapılmasıdır. Önce bir dosya okuyalım, sonra bir veritabanı işlemi yapalım ve sonrasında da bir http isteği gönderelim şeklinde basit bir şekilde çalışır. Beklemekten sıkılmaz, başka işlerin aciliyetiyle ilgilenmez. Bir işlem yapılırken diğer işlemler bloklanır.
Asenkron programlama ise uzun süren bir işlemi beklemeden diğer işlemlere devam edebilmektir, işlemlerin sırasıyla devam etme zorunluluğu yoktur. Önce bir dosya okuyalım, aaa ama bu dosya okumak uzun sürüyor, eee ne yapalım o zaman? Bu işlemin bitmesini beklemeden diğer işleme geçebiliriz. Bir işlem yapılırken diğer işlemler bloklanmaz.
Peki efendim! Bu tanımların Node.js açısından önemi tam olarak nedir? Ne demiştik öncesinde Javascript single thread, yani aynı anda sadece ve sadece tek bir işlem yapabilir. Yani tek bir çalışanımız var, bu çalışanın mümkün olduğu kadar çok iş yapabilmesi için ne yapmamız gerekir? Boş bırakmamamız:)))
Bir işlem başladıktan sonra beklemeden diğer işlemleri de yapmasını bekleriz.
Burada hemen şu ufak eklemeyi de yapalım. Eğer beklediğimiz uzun süreli işleme bağımlı diğer işlemler varsa bunların da beklenen işe ekleyebilmeliyiz. Asenkron programlamanın diğer işlevi de budur.
Burayı da anladık, ama hocam! Biz işlemleri tamam bir şekilde bitmelerini beklemeden hızlıca başlattık, peki bu işlemler bittiğinde bunun sıralaması nasıl yapılıyor? İşte burada devreye event-loop girer
.
Event-Loop, callback, single thread.. Nasıl hiçbir şey anlamıyoruz değil mi? Özellikle aşağıdaki grafiği açıklayayım hiç işleri zorlaştırmaya gerek yok. Restoran - garson metaforumuza tekrar döneceğim burada. Restoranımız çalışma ortamı ve yalnızca tek bir garson çalışıyor (Single Thread) bu garsonumuz önce 1. masaya ait siparişleri aldı ve siparişi mutfağa bildirdi (Thread Pool). O siparişlerin hazır olmasını beklemeden (Non-Blocking) 2. masaya ait siparişleri aldı ve yine mutfağa bildirdi. Bu sırada kendisine 1. masanın yemeğinin hazır olduğu bildirildi (callback).
İşte bahsettiğimiz Node.js'in asenkron yapısının özeti budur. Node.js için temel amaç mümkün olan en kısa sürede beklemeden fazla sayıda işlem yapmaktır.
You need to enroll in the course to be able to comment!