Sobes.tech
Junior — Middle

Обяснете какво е блокиране (Lock) в контекста на мютекса и за какво се използва.

sobes.tech AI

Отговор от AI

Блокировката (Lock) е механизъм за синхронизация, който се използва за предотвратяване на едновременен достъп на няколко нишки или горутини до споделен ресурс, за да се избегнат състезателни условия и да се гарантира коректността на данните.

В контекста на mutex, блокировката означава, че когато една нишка захване (lock) mutex, други нишки, които се опитват да го захванат, ще чакат, докато първата не го освободи (unlock).

Пример на Go:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()         // захващане на блокировката
    counter++         // критична секция
    mu.Unlock()       // освобождаване на блокировката
}

По този начин, блокировката гарантира, че само една нишка изпълнява критичната секция на кода в даден момент.