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.