Sobes.tech
Junior — Middle

Aké typy mechanizmov blokovania vzájomného vylúčenia používate vo svojich projektoch?

sobes.tech AI

Odpoveď od AI

V jazyku Go na implementáciu vzájomného vylúčenia najčastejšie používam štandardný typ sync.Mutex. Je jednoduchý na použitie a efektívne blokuje kritické sekcie kódu.

Tiež používam sync.RWMutex, keď je potrebné rozlíšiť prístup na čítanie a zápis: niekoľko gorútin môže čítať dáta súčasne, ale zápis blokuje všetkých.

V niektorých prípadoch používam kanály (channels) na synchronizáciu, čo umožňuje vyhnúť sa explicitným zámkom a spraviť kód deklaratívnejším.

Príklad s sync.Mutex:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

Voľba mechanizmu závisí od konkrétnej úlohy a požiadaviek na výkon.