Sobes.tech
Junior — Middle

Come viene implementato il meccanismo di mutua esclusione usando Mutex nel linguaggio Go?

sobes.tech AI

Risposta dell'AI

Nel linguaggio Go, per implementare l'esclusione mutua (mutex) si utilizza il tipo sync.Mutex. Questo permette di proteggere le sezioni critiche del codice da accessi simultanei da parte di più goroutine, prevenendo condizioni di gara.

Operazioni principali:

  • Lock() — blocca il mutex, impedendo ad altre goroutine di accedere.
  • Unlock() — sblocca il mutex, permettendo ad altre goroutine di continuare.

Esempio di utilizzo:

package main

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    counter := 0

    mu.Lock() // Blocca il mutex
    counter++
    fmt.Println("Contatore:", counter)
    mu.Unlock() // Sblocca il mutex
}

In ambienti multithread, il mutex garantisce che solo una goroutine esegua il codice tra Lock() e Unlock() alla volta, prevenendo modifiche errate ai dati condivisi.