Sobes.tech
Middle

O que é um Mutex?

sobes.tech IA

Resposta da IA

O Mutex (exclusão mútua) é um mecanismo de sincronização em Go, que é usado para evitar o acesso simultâneo de várias goroutines a recursos comuns, como variáveis ou estruturas de dados. O Mutex garante que, em cada momento, apenas uma goroutine possa possuir o bloqueio e executar a secção crítica do código.

Exemplo de uso de sync.Mutex em Go:

import (
    "fmt"
    "sync"
)

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

    incrementar := func() {
        mu.Lock()           // adquirir o bloqueio
        defer mu.Unlock()   // libertar o bloqueio
        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)
}

Sem Mutex, o resultado pode ser incorreto devido a condições de corrida.