Sobes.tech
Junior — Middle

¿Cómo se implementa el mecanismo de exclusión mutua usando Mutex en el lenguaje Go?

sobes.tech AI

Respuesta de la IA

En el lenguaje Go, para implementar exclusión mutua (mutex) se utiliza el tipo sync.Mutex. Permite proteger las secciones críticas del código contra accesos simultáneos desde varias goroutines, previniendo condiciones de carrera.

Operaciones principales:

  • Lock() — bloquea el mutex, impidiendo que otras goroutines accedan.
  • Unlock() — libera el mutex, permitiendo que otras goroutines continúen.

Ejemplo de uso:

package main

import (
    "fmt"
    "sync"
)

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

    mu.Lock() // Bloquea el mutex
    counter++
    fmt.Println("Contador:", counter)
    mu.Unlock() // Libera el mutex
}

En entornos multihilo, el mutex garantiza que solo una goroutine ejecute el código entre Lock() y Unlock() a la vez, previniendo modificaciones incorrectas en datos compartidos.