为什么执行done <- true是表示通知外面事情做完了

来源:11-2 使用Channel等待任务结束

慕粉1057001915

2020-09-01

老师,为什么执行done <- true是表示通知外面事情做完了? <-worker.done 执行后, 就表示已经读好了? 感觉这里有点懵 。图片描述

写回答

1回答

ccmouse

2020-09-02

channel的读取是同步的。

我们在<-worker.done这行,会卡(block)住,等待从这个worker.done channel读取数据。但是到底读什么无关紧要。

另一头,我们做完事情以后,也必须往worker.done发送一个数据,那么接收方在<-worker.done这行就会收到我发的数据,不再block,继续走下去。这就完成了一次通知。至于发送的到底是什么数据无所谓,发true也可以,发1也可以,或者字符串"done",都可以。我们一般发送true。

2
1
慕粉1057001915
非常感谢!
2020-09-02
共1条回复

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程