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 chameSignal()ouBroadcast().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.