# Eşzamanlılık

Adres: https://softwaredictionary.org/tr/terimler/concurrency
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-09-30
İngilizcesi: Concurrency
Okunuşu: kınkörınsi

Kısaca: Eşzamanlılık, bir programın birden çok görevde örtüşen zaman dilimlerinde ilerleyebilme yeteneğidir; örneğin birçok kullanıcıya aynı anda hizmet vermek gibi.

## Programlamada eşzamanlılık (concurrency) nedir?

Eşzamanlılık, bir programı birden çok görevle aynı anda başa çıkabilecek biçimde yapılandırmak, birini tamamen bitirip ardından diğerine başlamak yerine ihtiyaç oldukça aralarında geçiş yapmak demektir. Binlerce kullanıcıya hizmet veren bir web sunucusu, siz kaydırırken dosya indiren bir tarayıcı ve arka planda görüntü yükleyen bir telefon uygulaması eşzamanlılığa dayanır. Özellikle görevler bir ağ yanıtı ya da disk okuması gibi bir şey için beklerken zaman harcadığında yararlıdır.

Eşzamanlılığa ulaşmanın birkaç yolu vardır. İş parçacıkları (thread) işletim sisteminin tek bir program içinde ayrı talimat dizilerini çalıştırmasını sağlar; JavaScript ve Node.js'in kullandığı olay döngüleri (event loop) ise tek iş parçacığında aynı anda tek bir kod parçasını çalıştırır, ancak bir görev girdi/çıktı için beklediğinde diğer işe geçer. Diller ayrıca async/await, Go'daki goroutine'ler ve Erlang ile Elixir'deki aktörler (actor) gibi daha üst seviyeli araçlar da sunar.

Tek bir aşçının birkaç yemek pişirmesi eşzamanlılık için klasik bir benzetmedir: makarna kaynarken aşçı sebze doğrar, sonra sosu karıştırır ve her yemeği ilerletmeye devam eder. Paralellik ise her biri aynı anda bir yemek pişiren birkaç aşçıya sahip olmak gibidir, tıpkı birden çok CPU çekirdeğinin kodu aynı anda çalıştırması gibi. Eşzamanlılık aynı anda birçok şeyle uğraşmakla, paralellik ise aynı anda birçok şey yapmakla ilgilidir; bir program paralel olmadan da eşzamanlı olabilir.

Eşzamanlılık kendine özgü bir hata sınıfı getirir. Yarış durumu (race condition), sonucun görevlerin öngörülemez zamanlamasına bağlı olduğu durumdur; örneğin iki iş parçacığının aynı banka bakiyesini aynı anda güncellemesi ve güncellemelerden birinin kaybolması gibi. Geliştiriciler bunları kilitler (lock), atomik işlemler, mesaj geçişi ya da değişmez veriyle önler; ancak dikkatsiz kilitleme, iki görevin birbirini sonsuza dek beklediği bir kilitlenmeye (deadlock) yol açabilir.

## Önemli noktalar

- Eşzamanlılık, bir programın birden çok görevde örtüşen zaman dilimlerinde ilerlemesini sağlar.
- İş parçacıkları, olay döngüleri, async/await, goroutine'ler ya da aktörlerle sağlanabilir.
- Paralellik, görevlerin birden çok çekirdekte tam anlamıyla aynı anda çalışması demektir; eşzamanlılık bunu gerektirmez.
- Paylaşılan değişebilir veriye erişim koordine edilmezse yarış durumları ve kilitlenmeler oluşabilir.

## Örnek: JavaScript'te eşzamanlı ve ardışık istekler

```javascript
// Concurrent: both requests are in flight at the same time
async function loadDashboard() {
  const [user, orders] = await Promise.all([
    fetch("/api/user").then((res) => res.json()),
    fetch("/api/orders").then((res) => res.json()),
  ]);
  return { user, orders };
}

// Sequential: the second request waits for the first to finish
async function loadDashboardSlowly() {
  const user = await fetch("/api/user").then((res) => res.json());
  const orders = await fetch("/api/orders").then((res) => res.json());
  return { user, orders };
}
```

## Sık sorulan sorular

**Eşzamanlılık ile paralellik arasındaki fark nedir?**

Eşzamanlılık, ömürleri örtüşen birden çok görevi, herhangi bir anda yalnızca biri çalışıyor olsa bile yönetmekle ilgilidir. Paralellik ise birden çok görevi birden çok CPU çekirdeğinde tam anlamıyla aynı anda yürütmektir; eşzamanlı işi çalıştırmanın bir yoludur, ancak tek yolu değildir.

**Yarış durumu (race condition) nedir?**

Yarış durumu, sonucun eşzamanlı görevlerin çalışma zamanlamasına ya da sırasına bağlı olduğu bir hatadır. Örneğin iki görev bir sayacı okur, bir ekler ve aynı anda geri yazarsa artışlardan biri kaybolabilir.

**JavaScript eşzamanlı mıdır?**

Evet. JavaScript kodunuzu tek bir iş parçacığında çalıştırır, ancak olay döngüsü, beklerken başka kod çalıştırarak zamanlayıcılar ve ağ istekleri gibi birçok işlemi eşzamanlı olarak yönetmesini sağlar. Gerçek paralellik için tarayıcılar Web Worker'ları, Node.js ise worker thread'leri sunar.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
