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.