Mám dvě goroutines: hlavní worker
a helper
to, že to lupne pro pomoc. helper
můžete narazit na chyby, takže jsem použít kanál pro komunikaci chyby z helper
k worker
.
func helper(c chan <- error) (){
//do some work
c <- err // send errors/nil on c
}
Zde je, jak helper()
se nazývá:
func worker() error {
//do some work
c := make(chan error, 1)
go helper(c)
err := <- c
return err
}
Otázky:
Je prohlášení
err := <- c
blokováníworker
? Nemyslím si, že tak, protože kanál je vyrovnávací paměti.Pokud je blokování, jak mám udělat, aby to non-blocking? Můj požadavek je, aby
worker
a jeho volajícího pokračovat s zbytek práce, bez čekání na hodnoty, které se objeví na kanálu.
Díky.
c
?