Junior — Middle
Какви типове взаимни изключвания (Mutex) са реализирани в стандартната библиотека на Go?
sobes.tech AI
Отговор от 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
}