Ho due goroutines: il principale worker
e un helper
che si gira fuori per aiuto. helper
possono verificarsi degli errori, in modo da utilizzare un canale per comunicare con errori da helper
per il worker
.
func helper(c chan <- error) (){
//do some work
c <- err // send errors/nil on c
}
Ecco come helper()
si chiama:
func worker() error {
//do some work
c := make(chan error, 1)
go helper(c)
err := <- c
return err
}
Domande:
È la dichiarazione
err := <- c
il bloccoworker
? Io non la penso così, dal momento che il canale è memorizzato nel buffer.Se si blocca, come posso fare per non bloccare? La mia esigenza è quella di avere
worker
e il suo chiamante continuare con il resto dell'opera, senza l'attesa per il valore visualizzato sul canale.
Grazie.
c
?