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