Назад к вопросам
Junior — Middle
83
Объясните, что такое блокировка (Lock) в контексте мьютекса и для чего она используется?
Ответ от нейросети
sobes.tech AI
Блокировка (Lock) — это механизм синхронизации, который используется для предотвращения одновременного доступа нескольких потоков или горутин к общему ресурсу, чтобы избежать состояния гонки и обеспечить корректность данных.
В контексте мьютекса (mutex) блокировка означает, что когда один поток захватывает (lock) мьютекс, другие потоки, пытающиеся захватить тот же мьютекс, будут ждать, пока первый поток не освободит (unlock) его.
Пример на Go:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock() // захват блокировки
counter++ // критическая секция
mu.Unlock() // освобождение блокировки
}
Таким образом, блокировка гарантирует, что только один поток выполняет критическую секцию кода в конкретный момент времени.