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