截图中的代码:
forever:是一个无缓冲的通道
<- forever:没有任何goroutine向forever管道生产数据,一直阻塞中
或者
forever <- true:没有任何goroutine从forever管道读取数据,一直阻塞中
执行后,会一直循环打印555,并未出现deadlock死锁现象
学生的困惑如下:
正因为上述代码能正确执行,并没有出现deadlock死锁现象,反而让学生陷入了困惑
因为在学习channel这一章节时,学生私下总结了一条结论:goroutine的生产与消费都需要准备就绪,理解的白话文就是channel像是一个流水的管道,读取与写入都需要准备好,否则容易产生deadlock死锁现象,但上述代码却好像违背了这一结论,只有读或者只有写时,也没有出现deadlock死锁现象
请老师能指点一下,学生该如何正确理解channel呢?