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() // освобождаване на блокировката
}
По този начин, блокировката гарантира, че само една нишка изпълнява критичната секция на кода в даден момент.