Sobes.tech
Назад к вопросам
Middle
5

Что такое Mutex?

Компании, где спрашивали
VKVK

Ответ от нейросети

sobes.tech AI

Mutex (mutual exclusion) — это механизм синхронизации в Go, который используется для предотвращения одновременного доступа нескольких горутин к общим ресурсам, например, к переменным или структурам данных. Mutex гарантирует, что в каждый момент времени только одна горутина может владеть блокировкой и выполнять критическую секцию кода.

Пример использования sync.Mutex в Go:

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    counter := 0

    increment := func() {
        mu.Lock()           // захват блокировки
        defer mu.Unlock()   // освобождение блокировки
        counter++
    }

    var wg sync.WaitGroup
    for i := 0; i < 1000; i++ {
        wg.Add(1)
        go func() {
            defer wg.Done()
            increment()
        }()
    }
    wg.Wait()
    fmt.Println("Counter:", counter)
}

Без Mutex результат мог бы быть некорректным из-за гонок данных.