本网站可以通过分类标签帮助你快速筛选出你想看的文章,记住地址:www.Facec.cc

channel的死锁问题

1.Channel满了,就阻塞写; Channel空了,就阻塞读

2.阻塞之后会交出cpu,去执行其他协程,希望其他协程能帮自己解除阻塞

3.如果阻塞发生在main协程里,并且没有其他子协程可以执行,那就可以确定“希望永远等不来”,自己把自己杀掉,报一个fatal error:deadlock出来

4.如果阻塞发生在子协程里,就不会发生死锁,因为至少main协程是一个值得等待的"希望",会一直等(阻塞)下去。

管道案例

image.png
sub routine 1 over 会被打印
sub routine 2 over 不会打印

# golang  

评论