Junior — Middle
Pode explicar o que são canais síncronos e como eles funcionam na programação?
sobes.tech IA
Resposta da IA
Os canais síncronos na programação, especialmente em Go, são canais que bloqueiam o remetente até que o destinatário leia os dados, e vice-versa. Ou seja, a transferência de dados ocorre apenas quando ambas as partes estão prontas.
Em Go, um canal sem buffer é síncrono. Exemplo:
ch := make(chan int) // canal síncrono
// Envio
go func() {
ch <- 42 // bloqueia até que alguém leia
}()
// Receção
val := <-ch // bloqueia até que alguém envie
fmt.Println(val)
Aqui, o envio no canal ch aguardará até que outra goroutine leia o valor, e vice-versa. Isso permite sincronizar a execução das goroutines e trocar dados sem usar mecanismos adicionais de sincronização.