Junior — Middle
Paaiškinkite, kas yra blokavimas (Lock) mutex kontekste ir kam jis naudojamas.
sobes.tech AI
Atsakymas iš AI
Užraktas (Lock) yra sinchronizacijos mechanizmas, naudojamas siekiant užkirsti kelią kelių srautų ar gorutinių vienu metu prieiti prie bendro ištekliaus, siekiant išvengti lenktynių sąlygų ir užtikrinti duomenų teisingumą.
Mutex kontekste užraktas reiškia, kad kai vienas srautas užrakina (lock) mutex'ą, kiti srautai, bandantys jį užrakinti, lauks, kol pirmasis jį atlaisvins (unlock).
Pavyzdys Go kalba:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock() // užrakinti mutex'ą
counter++ // kritinė sekcija
mu.Unlock() // atlaisvinti mutex'ą
}
Taip užraktas garantuoja, kad tik vienas srautas vienu metu vykdys kritinę kodo sekciją.