Junior — Middle
Koja je razlika između korišćenja standardnog muteksa i muteksa sa mogućnošću čitanja i pisanja (RWMutex)?
sobes.tech АИ
Одговор од АИ
Standardni Mutex (sync.Mutex) u Go omogućava ekskluzivan pristup resursu: u svakom trenutku samo jedna gorutina može da ga zauzme, ostale čekaju.
Mutex sa mogućnošću čitanja i pisanja (sync.RWMutex) omogućava:
- Više gorutina može istovremeno da zauzme mutex za čitanje (RLock), ako nema pisca.
- Samo jedna gorutina može da zauzme mutex za pisanje (Lock), blokirajući sve čitaoce i ostale pisce.
Ovo povećava performanse u scenarijima gde su operacije čitanja mnogo češće od pisanja, jer čitanja ne blokiraju jedno drugo.
Primer:
var mu sync.RWMutex
var data int
// Čitanje
mu.RLock()
fmt.Println(data)
mu.RUnlock()
// Pisanje
mu.Lock()
data = 42
mu.Unlock()
Ako koristite običan Mutex, čak i čitanja će blokirati jedno drugo, što smanjuje paralelizam.