老师你好, goroutine 使用channel遍历二叉树问题

来源:11-3 使用Channel进行树的遍历

rockLei

2019-05-20

go,channel 不是需要进行done操作吗

或者加一个时间等待, 这里看到没有进行此操作, 有个疑问 ??

写回答

2回答

ccmouse

2019-05-26

done是WaitGroup需要的。

channel本身只是需要close,而且不是都需要,只是在我们明确知道值送完的情况下才需要。这里我们是适合使用close的,用了 close,外面用for...range就可以遍历这个channel里所有的值。

for...range在这里就是不断地接收值直到close,这里的接收中,如果对面没有值过来,是无限等待的。

2
0

wdmzjgxd

2019-08-01

上一节的例子,无论使用doneChannel还是waitGroup或者sleep,都没有关闭channel,所以for...range是无限等待的,但阻塞的不是main的线程,所以程序不会异常,直到main函数结束。但这一节的例子,如果不调close关闭channel,for...range所在的main函数就会无限等待,造成异常

0
0

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

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

5995 学习 · 1909 问题

查看课程