Middle
C#'ta lock-ler nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
C# dilinde lock, bir kod bloğuna münhasır erişimi sağlamak için kullanılır. Bu, yalnızca bir akışın aynı anda bu bloğu çalıştırmasını garanti eder ve paylaşılan kaynaklarla çalışırken yarış koşullarını (race conditions) önler.
private static readonly object _lockObject = new object(); // Senkronizasyon nesnesi
public void AccessSharedResource()
{
lock (_lockObject) // Nesne kilidi
{
// Kritik bölüm: münhasır erişim gerektiren kod
// Paylaşılan kaynakla çalışma (örneğin, bir değişkeni değiştirme)
} // Kilit, bloktan çıkarken otomatik olarak serbest bırakılır
}
Alternatifler ve ilişkili kavramlar:
Monitor: Senkronizasyon üzerinde daha ayrıntılı kontrol sağlar, Wait, Pulse, PulseAll metodlarını içerir.Mutex: Hem süreçler arası hem de aynı süreç içindeki akışlar arasında senkronizasyon için kullanılır.Semaphore/SemaphoreSlim: Bir kaynağa aynı anda erişebilecek akışların sayısını sınırlar.ReaderWriterLockSlim: Birden fazla akışın aynı anda okumasına izin verir, ancak yalnızca bir akış yazabilir.
Kilitleme mekanizmasının seçimi, belirli senkronizasyon görevine bağlıdır. lock, Monitor.Enter ve Monitor.Exit kullanımının kısaltmasıdır ve çoğu basit senkronizasyon durumu için uygundur.