老师你好,goroutine的问题
来源:11-3 使用Channel进行树的遍历

鱼右
2018-06-05
老师这里的node一直送数据,没有人收,为什么放到go func(){}就不会deadlock,单独就会出现deadlock呢?
写回答
3回答
-
ccmouse
2018-06-11
非常抱歉可能当时那两天正好忙了一下没看到,然后问题有了回答以后,反而不出现在待解答里面了。
这里呢,首先假设我们收到返回值的人会从out里面不断收数据。但是如果不使用go func的话,out<-node这行就会等人收,但此时函数还没有返回,外面从out收数据的代码还没执行到,形成了死锁。
那么这里有了go func。go func这一大段只是开了一个goroutine“并行”执行,而TraverseWithChannel立刻返回,那么外面收数据的代码就被执行到,这个channel的路就通了。
142018-06-12 -
鱼右
提问者
2018-06-11
老师 在嘛 马上一周了 囧
00 -
鱼右
提问者
2018-06-07
老师看到以后 ,可以回答一下嘛 多谢
00
相似问题