go 一个channel在多个go协程中被接受

maple · · 3967 次点击
1.如果不加条件变量设置的话,两个协程是没法确认谁先收到的。而且一个收到以后另一个必定会阻塞。你可以让代码按照顺序正确执行,但是你是无法控制go的调度器的,所以这个你是没法确认的。在非缓存channel中,发送方向channel里面发送一个值,channel会把这个值的备份发给channel的接收方,而且接收方一定会在发送方结束之前接收到这个值的副本。 2.如果你想控制它的顺序,理论上可以加一个信号控制的channel。也可以使用select,但是使用select在你这里会造成错误。 3.你写的代码存在一些低级的错误,麻烦以后确认好了再发给大家。
#6
更多评论
在func加参数限制 来决定谁先接受 或者select也能做到
#1
如果是两个func 都在等待 n通道的信息,现在往n通道里面投递一个值,谁会先收到呢?
#2