Junior — Middle
Можеш ли да обясниш какво е взаимното изключване (Mutex) и как работи?
sobes.tech AI
Отговор от AI
Взаимното изключване (Mutex) е механизъм за синхронизация, който гарантира, че в даден момент само една горутина (нишка) може да получи достъп до определен ресурс или критична секция от кода.
В Go за това се използва типът sync.Mutex. Когато горутината извика Lock(), тя блокира мютекса, и други горутини, които се опитват да извикат Lock(), ще чакат, докато мютексът не бъде отключен с Unlock().
Пример:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
В този пример increment безопасно увеличава стойността на counter, предотвратявайки едновременен достъп от няколко горутини.