J'ai deux goroutines: le principal worker
et un helper
qu'il lance pour de l'aide. helper
pouvez rencontrer des erreurs, j'ai donc utiliser un canal pour communiquer les erreurs au cours de la helper
à l' worker
.
func helper(c chan <- error) (){
//do some work
c <- err // send errors/nil on c
}
Voici comment helper()
est appelé:
func worker() error {
//do some work
c := make(chan error, 1)
go helper(c)
err := <- c
return err
}
Questions:
La déclaration
err := <- c
blocageworker
? Je ne le pense pas, car le canal est mis en mémoire tampon.Si c'est le blocage, comment dois-je le faire sans blocage? Mon exigence est d'avoir
worker
et son appelant continuer avec le reste de l'œuvre, sans attente pour la valeur à apparaître sur le canal.
Merci.
c
?