Junior — Middle
Hogyan valósul meg a kölcsönös kizárás mechanizmusa Mutex segítségével a Go nyelvben?
sobes.tech MI
Válasz az MI-től
A Go nyelvben a kölcsönös kizárás (mutex) megvalósításához a sync.Mutex típus használatos. Ez lehetővé teszi, hogy a kritikus kódrészeket több goroutine közötti egyidejű hozzáféréstől megvédje, megelőzve a versenyhelyzeteket.
Fő műveletek:
Lock()— zárolja a mutexet, megakadályozva más goroutine-ok hozzáférését.Unlock()— feloldja a mutexet, lehetővé téve más goroutine-ok számára a folytatást.
Használati példa:
package main
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
mu.Lock() // Mutex zárolása
counter++
fmt.Println("Számláló:", counter)
mu.Unlock() // Mutex feloldása
}
Többszálas környezetben a mutex garantálja, hogy csak egy goroutine hajtja végre a Lock() és Unlock() közötti kódot egyszerre, ezáltal megakadályozva a megosztott adatok helytelen módosítását.