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 резултатът може да е некоректен поради състезателни условия.