Tengo dos goroutines: el principal worker
y un helper
que no deja de girar por un poco de ayuda. helper
pueden producirse errores, por lo que utilizar un canal para comunicar errores a lo largo de la helper
a la worker
.
func helper(c chan <- error) (){
//do some work
c <- err // send errors/nil on c
}
Aquí es cómo helper()
se llama:
func worker() error {
//do some work
c := make(chan error, 1)
go helper(c)
err := <- c
return err
}
Preguntas:
Es la declaración de
err := <- c
el bloqueo deworker
? No lo creo, ya que el canal está en el búfer.Si es el bloqueo, ¿cómo puedo hacer que el bloqueo no? Mi requisito es tener
worker
y su llamada a continuar con el resto de la obra, sin esperar por el valor que aparezca en el canal.
Gracias.
c
?