Eşzamanlılık Nedir?
İngilizce: Concurrency
Yayın: · Son güncelleme:
Eşzamanlılık Nedir? Kısaca
Eşzamanlılık (concurrency), bir sistemin birden fazla işi aynı zaman diliminde ilerletebilmesidir. İşler gerçekten aynı anda çalışmak zorunda değildir; sistem aralarında geçiş yaparak hepsini ilerletebilir.

Eşzamanlılık nedir?
Eşzamanlılık, birden fazla görevin aynı zaman aralığında başlayıp ilerlediği, birbirinin bitmesini beklemeden yürüdüğü çalışma biçimidir. İngilizcede concurrency olarak geçer. Bir web sunucusunun aynı anda yüzlerce kullanıcıya yanıt vermesi bunun tipik örneğidir.
Paralellikten farkı
Bu iki kavram sık karıştırılır. Tek başına yemek hazırlayan bir aşçıyı düşünün: makarna suyu kaynarken salatayı doğrar, arada sosu karıştırır. Üç iş de aynı yarım saatte ilerler ama aşçı her an tek bir şeyle ilgilenir. Buna eşzamanlılık denir.
Mutfakta üç aşçı olsaydı ve her biri ayrı yemeği aynı anda yapsaydı, bu paralellik olurdu. Yazılımda paralellik birden fazla işlemci çekirdeği gerektirir. Eşzamanlılık ise tek çekirdekte bile, işler arasında hızlı geçişle sağlanabilir.
Nasıl uygulanır?
Programlama dilleri eşzamanlılık için farklı araçlar sunar. Thread ve multithreading en eski yöntemdir. JavaScript ve Python'da async/await ile kurulan asenkron yapı, tek thread üzerinde binlerce bekleyen işi yönetebilir. Go dilindeki goroutine'ler ve Erlang'daki hafif süreçler de aynı amaca hizmet eder.
Nelere dikkat etmeli?
Birden fazla görev aynı veriye dokunuyorsa, erişim sırası belirsizleşir. Bir stok sayacını iki istek aynı anda azaltırsa sonuç yanlış çıkabilir. Bu tür hatalar testte görünmeyip yoğun trafikte ortaya çıktığı için, paylaşılan veriyi en aza indirmek ve kilit ya da atomik işlem gibi araçları bilinçli kullanmak gerekir.
Sıkça Sorulan Sorular
Eşzamanlılık ile paralellik arasındaki fark nedir?
Eşzamanlılık, birden çok işi aynı dönemde yönetmekle ilgilidir ve tek çekirdekte de olabilir. Paralellik ise işlerin gerçekten aynı anda, farklı çekirdeklerde yürütülmesidir.
Eşzamanlılık hangi sorunlara yol açar?
En bilinen sorunlar yarış durumu ve deadlock'tur. Paylaşılan veriye erişim düzenlenmezse sonuçlar tutarsız olur ya da program kilitlenir.