为什么加了done<-true就能通知外面打印完了呢
来源:6-2 使用Channel等待任务结束
寻曜
2021-08-15 16:39:22
为什么加了done<-true就能通知外面打印完了呢?是通过什么方式通知的呀?为什么加了done<-true主程序就会等着协程打印完毕呢?
还有往done放数据的时候done<-true还没有人收,收数据<-done是在后面才执行的,为什么不报错呢,如下图:
1回答
ccmouse
2021-08-17
代码出现在前边并不表明它一定先执行。
这里done<-true是一个双向的约定。我的worker做完事情就说done<-true。
这里暂时没有人接收这个true,所以goroutine被挂起(block) ,由main函数06:53处:
我们接收了这个true,main函数就知道里面的worker都完成了。
相似问题