Am două goroutines: principalele worker
și o helper
care se invarte off pentru ajutor. helper
pot apărea erori, asa ca am folosi un canal pentru a comunica erori de helper
la worker
.
func helper(c chan <- error) (){
//do some work
c <- err // send errors/nil on c
}
Aici este cum helper()
se numește:
func worker() error {
//do some work
c := make(chan error, 1)
go helper(c)
err := <- c
return err
}
Întrebări:
Este declarația
err := <- c
blocareaworker
? Nu cred, deoarece canalul este tamponat.Dacă se blochează, cum pot face non-blocking? Cerința mea este de a avea
worker
și apelant sa continue cu restul de lucru, fără a aștepta pentru valoarea sa apar pe canal.
Multumesc.
c
?