Sobes.tech
Junior — Middle

Jaki jest cel typu synchronizacji RWMutex w języku programowania?

sobes.tech AI

Odpowiedź od AI

W języku Go typ RWMutex (Read-Write Mutex) służy do synchronizacji dostępu do zasobów współdzielonych, pozwalając wielu gorutynom na jednoczesne odczytywanie danych, ale blokując zapis, gdy odczyt jest w toku, i odwrotnie.

Głównym celem RWMutex jest zwiększenie wydajności w scenariuszach, gdzie operacji odczytu jest znacznie więcej niż zapisów. Udostępnia dwa typy blokad:

  • RLock() — blokada do odczytu, pozwala wielu czytelnikom na jednoczesny dostęp.
  • Lock() — blokada do zapisu, dostęp wyłączny.

Przykład użycia:

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
}

W ten sposób RWMutex pomaga efektywnie zarządzać dostępem współbieżnym, minimalizując blokady przy częstym odczycie.