Concurrency Nedir?

İngilizce: Concurrency

Concurrency, görevleri aynı zaman diliminde ilerletecek şekilde planlayıp bekleme sürelerini değerlendiren yazılım tasarım yaklaşımıdır.

Concurrency Nedir?

Concurrency, bir programın birden fazla işi aynı zaman aralığında ilerletebilmesidir. Bu, her işin mutlaka fiziksel olarak aynı anda çalıştığı anlamına gelmez; önemli olan bir iş ağ, disk veya veritabanı yanıtı beklerken diğer işlerin bloklanmamasıdır.

Parallelism ile Farkı

Parallelism, birden fazla işi gerçekten aynı anda farklı CPU çekirdeklerinde çalıştırır. Concurrency ise görevleri planlama, bekleyen işleri askıya alma ve hazır olan işe geçme modelidir. Bir restoranın tek kasiyerle sıradaki işlemleri yönetmesi concurrency’ye; birden çok kasiyerin aynı anda çalışması parallelism’e benzer.

Nasıl Uygulanır?

Web uygulamalarında concurrency çoğu zaman event loop, thread pool, coroutine veya actor modeliyle kurulur. Async programlama, I/O bekleyen işlemlerde yaygın bir yöntemdir: API çağrısı veya dosya okuma sürerken uygulama başka istekleri karşılamaya devam edebilir.

Dikkat Edilecekler

Concurrency yanlış tasarlanırsa race condition, deadlock, kaynak sızıntısı ve takip edilmesi zor hata durumları doğurur. Paylaşılan veriye erişim sınırlandırılmalı, işlem süreleri izlenmeli ve timeout davranışları açıkça tanımlanmalıdır.

İş Dünyasında Kullanımı

Concurrency, canlı destek, ödeme doğrulama, rapor üretimi, kuyruk tüketimi ve yüksek trafikli API servislerinde kullanıcıları bekletmeden işlem yapmayı sağlar. Ancak daha fazla eşzamanlı iş her zaman daha iyi değildir; veritabanı bağlantısı, harici API kotası ve CPU kapasitesiyle birlikte planlanmalıdır.