Sobes.tech
Junior — Middle

Read-Write bloklama (RWMutex) nədir və məlumatlara girişin idarə olunmasında necə istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Go-da Oxu-Yazma (RWMutex) kilidi, bir neçə goroutine-un məlumatları eyni zamanda oxumasına imkan verən, lakin yazma zamanı eksklüziv giriş təmin edən sinxronizasiya mexanizmidir.

  • RLock() / RUnlock() — oxuma üçün kilid. Bir neçə goroutine bu kilidi eyni zamanda saxlaya bilər.
  • Lock() / Unlock() — yazma üçün kilid. Yalnız bir goroutine onu saxlaya bilər və bu zaman heç bir oxuma icazə verilmir.

Bu, çox sayda oxuma əməliyyatı və az sayda yazma əməliyyatı olduqda performansı artırır.

İstifadə nümunəsi:

var rwMutex sync.RWMutex
var data int

func readData() int {
    rwMutex.RLock()
    defer rwMutex.RUnlock()
    return data
}

func writeData(val int) {
    rwMutex.Lock()
    defer rwMutex.Unlock()
    data = val
}

Bu nümunədə, bir neçə goroutine eyni zamanda readData() çağıra bilər, lakin writeData() çağırıldıqda, o bütün oxuma və yazma əməliyyatlarını bloklayır, onların tamamlanmasına qədər.