Sobes.tech
Junior — Middle

Standart mutex və oxuma və yazma imkanı olan mutex (RWMutex) istifadəsi arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Standart Mutex (sync.Mutex) Go təmin edir resursa eksklüziv giriş: hər an yalnız bir goroutine mutexi ələ keçirə bilər, digərləri gözləyir.

Oxuma və yazma imkanına malik sync.RWMutex mutex aşağıdakıları təmin edir:

  • Bir neçə goroutine eyni zamanda mutexi oxuma üçün (RLock) ələ keçirə bilər, əgər yazar yoxdursa.
  • Yalnız bir goroutine mutexi yazma üçün (Lock) ələ keçirə bilər və bu, bütün oxucuları və digər yazarları bloklayır.

Bu, oxuma əməliyyatlarının yazma əməliyyatlarından çox daha çox olduğu ssenarilərdə performansı artırır, çünki oxumalar bir-birini bloklamır.

Nümunə:

var mu sync.RWMutex
var data int

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

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

Əgər sadə Mutex istifadə olunursa, hətta oxumalar da bir-birini bloklayar, bu isə paralelliyi azaldır.