Junior — Middle
Ako je implementovaný mechanizmus vzájomného vylúčenia pomocou Mutex v jazyku Go?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa na implementáciu vzájomného vylúčenia (mutex) používa typ sync.Mutex. Umožňuje chrániť kritické sekcie kódu pred súčasným prístupom z viacerých gorutín, čím sa predchádza podmienkam súťaže.
Hlavné operácie:
Lock()— zamkne mutex, znemožní prístup ďalším gorutinám.Unlock()— odomkne mutex, umožní pokračovanie ostatným gorutinám.
Príklad použitia:
package main
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
mu.Lock() // Zamkne mutex
counter++
fmt.Println("Počítadlo:", counter)
mu.Unlock() // Odomkne mutex
}
V prostredí s viacerými vláknami garantuje mutex, že iba jedna gorutina vykoná kód medzi Lock() a Unlock() naraz, čím sa zabráni nesprávnym zmenám zdieľaných dát.