Junior — Middle
Jak realizowana jest wzajemna blokada (Mutex) w systemach programowania?
sobes.tech AI
Odpowiedź od AI
В Go для реализации взаимной блокировки (Mutex) используется тип sync.Mutex из стандартной библиотеки. Мьютекс обеспечивает эксклюзивный доступ к разделяемым ресурсам, предотвращая одновременное выполнение критической секции несколькими горутинами.
Пример использования:
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
mu.Lock() // Захватываем мьютекс
counter++ // Критическая секция
mu.Unlock() // Освобождаем мьютекс
fmt.Println(counter)
}
Мьютекс блокирует выполнение других горутин, пытающихся захватить его, пока он не будет освобожден. Это предотвращает состояния гонки при доступе к общим данным.