Sobes.tech
Junior — Middle

Kada je preporučljivo koristiti mehanizam RWMutex u programiranju za upravljanje zajedničkim pristupom resursima?

sobes.tech АИ

Одговор од АИ

Механизам RWMutex у Go-у се препоручује када имате ресурс којем могу приступати многи читаоци истовремено, али запис мора бити ексклузиван. RWMutex омогућава више горутина да читају податке истовремено без блокирања једни других, али при запису блокира приступ за све.

Ово побољшава перформансе у сценаријима са честим операцијама читања и ретким операцијама писања.

Пример употребе:

var mu sync.RWMutex
var data int

func readData() int {
    mu.RLock()         // блокирање за читање
    defer mu.RUnlock()
    return data
}

func writeData(val int) {
    mu.Lock()          // ексклузивно блокирање за писање
    defer mu.Unlock()
    data = val
}

Користите RWMutex када:

  • Читање се дешава често и паралелно.
  • Писање се ретко дешава и захтева ексклузиван приступ.

Ако су операције читања и писања приближно једнаке по учесталости, или ако је једноставност важна, боље је користити обичан Mutex.