Junior — Middle
Sistemler, birkaç iş parçacığının aynı anda ortak bir değişkene veya duruma eriştiği durumu nasıl işler?
sobes.tech yapay zeka
AI'dan gelen yanıt
Birden fazla iş parçacığı aynı anda ortak bir değişkene veya duruma eriştiğinde, yarış durumu (race condition) sorunu ortaya çıkar. Yanlış verileri önlemek ve doğruluğu sağlamak için senkronizasyon mekanizmaları kullanılır:
- Kilitlemeler (lock, mutex) — bir iş parçacığının kaynağı münhasıran kullanmasını sağlar, diğerleri bekler.
- Monitörler (Monitor.Enter/Exit C#'te) — daha esnek bir kilitleme mekanizması.
- C#'ta
lockanahtar kelimesi — monitörler için basitleştirilmiş sözdizimi. - Atomik işlemler (Interlocked) — tam kilitleme olmadan basit işlemler için.
- Eşzamanlı koleksiyonlar — çok iş parçacıklı güvenli veri yapıları.
C#'ta lock kullanımıyla örnek:
private readonly object _sync = new object();
private int _counter = 0;
public void Increment()
{
lock(_sync)
{
_counter++;
}
}
Bu yaklaşım, yalnızca bir iş parçacığının herhangi bir zamanda değişiklik yapmasını garanti eder.