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.