【发布时间】:2020-11-26 16:31:09
【问题描述】:
我无法弄清楚为什么该方法需要您专门提供缓冲通道。
func (*Client) Go
func (client *Client) Go(serviceMethod string, args interface{}, reply interface{}, done chan *Call) *Call
Go 异步调用函数。它返回调用结构 代表调用。完成通道将发出信号,当 通过返回相同的 Call 对象来完成调用。如果 done 为零,Go 将分配一个新的频道。 如果非零,done 必须被缓冲或 Go 会故意崩溃。
【问题讨论】:
-
不是一个完整的答案:the code 中有进一步的评论说“如果调用者通过 done != nil,它必须安排 done 有足够的缓冲区来容纳将要进行的同时 RPC 的数量使用那个通道。如果通道完全没有缓冲,最好不要运行。"
-
谢谢,我查看了代码,但我很好奇为什么会这样。