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