Назад к вопросам
Wildberries
Junior — Middle
84
Какие типы взаимных исключений (Mutex) реализованы в стандартной библиотеке Go?
Компании, где спрашивали
Indrive
Киберпротект
Ответ от нейросети
sobes.tech AI
В стандартной библиотеке Go реализован один основной тип взаимного исключения — sync.Mutex. Это простой мьютекс, который обеспечивает блокировку и разблокировку для защиты критических секций кода от одновременного доступа.
Кроме того, есть sync.RWMutex — расширенный вариант мьютекса, который позволяет нескольким читателям одновременно держать блокировку, но запись блокируется эксклюзивно.
Пример использования sync.Mutex:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
И пример с sync.RWMutex:
var rwMu sync.RWMutex
var data int
func readData() int {
rwMu.RLock()
defer rwMu.RUnlock()
return data
}
func writeData(val int) {
rwMu.Lock()
defer rwMu.Unlock()
data = val
}