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