Eu tenho dois goroutines: o principal worker
e um helper
que gira para alguma ajuda. helper
pode encontrar erros, então eu uso um canal para se comunicar erros ao longo do helper
para o worker
.
func helper(c chan <- error) (){
//do some work
c <- err // send errors/nil on c
}
É aqui como helper()
é chamado de:
func worker() error {
//do some work
c := make(chan error, 1)
go helper(c)
err := <- c
return err
}
Perguntas:
É a declaração de
err := <- c
bloqueioworker
? Eu não penso assim, já que o canal é armazenada em buffer.Se ele está bloqueando, como posso fazer isso sem bloqueio? A minha exigência é ter
worker
e seu chamador continuar com o resto da obra, sem espera, para que o valor exibido no canal.
Obrigado.
c
?