为什么执行done <- true是表示通知外面事情做完了
来源:11-2 使用Channel等待任务结束

慕粉1057001915
2020-09-01
老师,为什么执行done <- true是表示通知外面事情做完了? <-worker.done 执行后, 就表示已经读好了? 感觉这里有点懵 。
写回答
1回答
-
channel的读取是同步的。
我们在<-worker.done这行,会卡(block)住,等待从这个worker.done channel读取数据。但是到底读什么无关紧要。
另一头,我们做完事情以后,也必须往worker.done发送一个数据,那么接收方在<-worker.done这行就会收到我发的数据,不再block,继续走下去。这就完成了一次通知。至于发送的到底是什么数据无所谓,发true也可以,发1也可以,或者字符串"done",都可以。我们一般发送true。
212020-09-02
相似问题