GO语言自学_019_管道的总结
1、管道写满,会导致写阻塞。
2、缓冲区读完,会导致读阻塞。
3、管道没有使用make分配空间,管道默认空间是nil。
4、从nil的管道写入/读取数据,不会出错/崩溃,但是会阻塞。
5、从一个已经关闭close(channel)
了的管道读取数据时,返回0。不会崩溃。(和6对应去记)
6、向一个已经close的管道写数据,会崩溃。(和5对应去记)
7、关闭一个已经close的管道,程序会崩溃。(只能close一次)
8、close动作只可以在写管道中进行!因为在读的时候操作close动作,管道再写入不了数据,一旦写入,立刻崩溃。(根据第6点)
9、读写次数一定要对等,不然:
- 在多个子go程中,会发生内存泄漏。
- 在主go程中,会发生程序崩溃。即死锁(deadlock)