Sobes.tech
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ą.