我有两个go程序:主 worker
和一个 helper
它的旋转关闭一些帮助。 helper
可能会遇到错误,所以我使用一个信道的通信错误的 helper
来的 worker
.
func helper(c chan <- error) (){
//do some work
c <- err // send errors/nil on c
}
这里是怎么 helper()
被称为:
func worker() error {
//do some work
c := make(chan error, 1)
go helper(c)
err := <- c
return err
}
问题:
是的声明
err := <- c
阻挡worker
? 我不这么认为,由于道缓冲。如果这是阻挡,如何使它无阻塞? 我的要求是要有
worker
和它的呼叫者继续与其余的工作,而没有 等待 对于该价值出现在的通道。
谢谢。
c
?