Sobes.tech
Middle

¿Qué es un Mutex?

sobes.tech AI

Respuesta de la IA

Mutex (exclusión mutua) es un mecanismo de sincronización en Go, que se utiliza para evitar el acceso simultáneo de varias goroutines a recursos compartidos, como variables o estructuras de datos. Mutex garantiza que en cada momento solo una goroutine pueda poseer el bloqueo y ejecutar la sección crítica del código.

Ejemplo de uso de sync.Mutex en Go:

import (
    "fmt"
    "sync"
)

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

    incrementar := func() {
        mu.Lock()           // adquirir el bloqueo
        defer mu.Unlock()   // liberar el bloqueo
        contador++
    }

    var wg sync.WaitGroup
    for i := 0; i < 1000; i++ {
        wg.Add(1)
        go func() {
            defer wg.Done()
            incrementar()
        }()
    }
    wg.Wait()
    fmt.Println("Contador:", contador)
}

Sin Mutex, el resultado podría ser incorrecto debido a condiciones de carrera.