老师你好, 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,这里的接收中,如果对面没有值过来,是无限等待的。
20 -
wdmzjgxd
2019-08-01
上一节的例子,无论使用doneChannel还是waitGroup或者sleep,都没有关闭channel,所以for...range是无限等待的,但阻塞的不是main的线程,所以程序不会异常,直到main函数结束。但这一节的例子,如果不调close关闭channel,for...range所在的main函数就会无限等待,造成异常
00
相似问题