Sobes.tech
Middle

Какво е Mutex?

sobes.tech AI

Отговор от AI

Mutex (взаимно изключване) е механизъм за синхронизация в Go, който се използва за предотвратяване на едновременен достъп на няколко горутини до споделени ресурси, като променливи или структури от данни. Mutex гарантира, че във всеки момент само една горутина може да притежава блокировката и да изпълнява критичната секция на кода.

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

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    брояч := 0

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

    var wg sync.WaitGroup
    for i := 0; i < 1000; i++ {
        wg.Add(1)
        go func() {
            defer wg.Done()
            инкрементирай()
        }()
    }
    wg.Wait()
    fmt.Println("Брояч:", брояч)
}

Без Mutex резултатът може да е некоректен поради състезателни условия.