Sobes.tech
Junior — Middle

Pode explicar o que é uma variável condicional sync.Cond na linguagem Go e para que ela é usada?

sobes.tech IA

Resposta da IA

Na linguagem Go, sync.Cond é uma estrutura que implementa uma variável condicional, usada para sincronizar goroutines. Ela permite que uma ou várias goroutines esperem que uma condição específica aconteça e notifiquem outras goroutines de que essa condição mudou.

Principais métodos de sync.Cond:

  • Wait() — bloqueia a goroutine atual até que outra goroutine chame Signal() ou Broadcast().
  • Signal() — acorda uma goroutine que está esperando na variável condicional.
  • Broadcast() — acorda todas as goroutines que estão esperando na variável condicional.

Exemplo de uso:

var mu sync.Mutex
cond := sync.NewCond(&mu)

// Goroutine que espera por um sinal
go func() {
    mu.Lock()
    cond.Wait() // espera pelo sinal
    // após o despertar, realiza ações
    mu.Unlock()
}()

// Goroutine que envia o sinal
mu.Lock()
cond.Signal() // acorda uma goroutine
mu.Unlock()

Assim, sync.Cond ajuda a coordenar o trabalho de várias goroutines que aguardam que certas condições sejam atendidas.