Junior — Middle
Kāda ir atšķirība starp standarta mutex izmantošanu un mutex ar lasīšanas un rakstīšanas iespēju (RWMutex)?
sobes.tech AI
Atbilde no AI
Standarta Mutex (sync.Mutex) Go nodrošina ekskluzīvu piekļuvi resursam: katrā brīdī tikai viena gorutina var iegūt mutex, pārējās gaida.
Mutex ar lasīšanas un rakstīšanas iespēju (sync.RWMutex) ļauj:
- Dažas gorutinas var vienlaikus iegūt mutex lasīšanai (RLock), ja nav rakstītājs.
- Tikai viena gorutina var iegūt mutex rakstīšanai (Lock), bloķējot visus lasītājus un citus rakstītājus.
Tas palielina veiktspēju scenārijos, kur lasīšanas operācijas ir daudz biežākas nekā rakstīšanas, jo lasījumi viens otru nebloke.
Piemērs:
var mu sync.RWMutex
var data int
// Lasīšana
mu.RLock()
fmt.Println(data)
mu.RUnlock()
// Rakstīšana
mu.Lock()
data = 42
mu.Unlock()
Ja izmantojat parastu Mutex, pat lasīšanas operācijas bloķēs viena otru, kas samazina paralēlismu.