channel的收和发是不是一定要同时进行
来源:11-2 使用Channel等待任务结束

椰子树
2020-05-26
我发现,channel如果单纯的只收,或者只发就不会有
fatal error: all goroutines are asleep - deadlock!
这样的错误,如果channel是有收有发的话,并且不是同时进行,就会有 deadlock 这样的错误,是不是channel的收和发必须是同时进行的,求老师和同学们解答
写回答
1回答
-
ccmouse
2020-05-27
这里“同时进行”不是你控制的,是go语言运行环境控制的。channel应该是有收有发才对,只有收或者只有发会死锁。
不过系统的死锁检测不是所有情况下都会报的。很多时候死锁了,系统并不会报出这个死锁的错误。
022020-06-03
相似问题