Sobes.tech
Назад к вопросам
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()       // освобождение блокировки
}

Таким образом, блокировка гарантирует, что только один поток выполняет критическую секцию кода в конкретный момент времени.