Sobes.tech
Back to questions
Junior — Middle
101

Каким образом реализуется механизм взаимного исключения с помощью Mutex в языке Go?

Companies where asked
WildberriesWildberries
X5 groupX5 group
КуперКупер

Answer from AI

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(), что предотвращает некорректное изменение общих данных.