Sobes.tech
Junior — Middle

Standart bir mutex kullanımı ile okuma ve yazma (RWMutex) özelliğine sahip mutex kullanımı arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde standart mutex (sync.Mutex), bir kaynağa özel erişim sağlar: her an sadece bir goroutine mutexi alabilir, diğerleri bekler.

Okuma ve yazma imkanı sağlayan mutex (sync.RWMutex) şunlara izin verir:

  • Birden fazla goroutine, eğer yazıcı yoksa, aynı anda mutexi okuma (RLock) için alabilir.
  • Sadece bir goroutine, yazma (Lock) için mutexi alabilir ve bu durumda tüm okuyucular ve diğer yazarlar engellenir.

Bu, okuma işlemlerinin yazma işlemlerinden çok daha fazla olduğu senaryolarda performansı artırır, çünkü okuma işlemleri birbirini engellemez.

Örnek:

var mu sync.RWMutex
var data int

// Okuma
mu.RLock()
fmt.Println(data)
mu.RUnlock()

// Yazma
mu.Lock()
data = 42
mu.Unlock()

Eğer normal bir Mutex kullanılırsa, hatta okuma işlemleri bile birbirini engeller, bu da paralelliği azaltır.