Назад к вопросам
Wildberries
X5 group
Купер
Junior — Middle
102
Каким образом реализуется механизм взаимного исключения с помощью Mutex в языке Go?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В языке Go для реализации взаимного исключения (mutex) используется тип sync.Mutex. Он позволяет защитить критические секции кода от одновременного доступа из нескольких горутин, предотвращая состояния гонки.
Основные операции:
Lock()— захватывает мьютекс, блокируя другие горутины.Unlock()— освобождает мьютекс, позволяя другим горутинам продолжить работу.
Пример использования:
package main
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
mu.Lock() // Захватываем мьютекс
counter++
fmt.Println("Counter:", counter)
mu.Unlock() // Освобождаем мьютекс
}
В многопоточной среде мьютекс гарантирует, что только одна горутина одновременно выполняет код между Lock() и Unlock(), что предотвращает некорректное изменение общих данных.