Sobes.tech
Junior — Middle

Read-Write kilidi (RWMutex) nedir ve verilere erişimi yönetmek için nasıl kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da Okuma-Yazma Kilidi (RWMutex), birden fazla goroutine'un verileri aynı anda okumasına izin veren, ancak yazma sırasında münhasır erişimi garanti eden bir senkronizasyon mekanizmasıdır.

  • RLock() / RUnlock() — okuma için kilit. Birden fazla goroutine aynı anda bu kilidi tutabilir.
  • Lock() / Unlock() — yazma için kilit. Sadece bir goroutine tutabilir ve bu süre zarfında hiçbir okuma izin verilmez.

Bu, çok sayıda okuma işlemi ve nadiren yapılan yazma işlemleri olduğunda performansı artırır.

Kullanım örneği:

var rwMutex sync.RWMutex
var data int

func readData() int {
    rwMutex.RLock()
    defer rwMutex.RUnlock()
    return data
}

func writeData(val int) {
    rwMutex.Lock()
    defer rwMutex.Unlock()
    data = val
}

Bu örnekte, birkaç goroutine aynı anda readData() çağırabilir, ancak writeData() çağrıldığında, tüm okuma ve yazma işlemleri tamamlanana kadar engellenir.