码农桃花源
GitHub
知乎
掘金
博客园
Search…
码农桃花源
README
channel
06 - 从一个关闭的 channel 仍然能读出数据吗
12 - channel 有哪些应用
08 - 如何优雅地关闭 channel
10 - channel 在什么情况下会引起资源泄漏
00 - 什么是 CSP
channel 底层的数据结构是什么
09 - channel 发送和接收元素的本质是什么
11 - 关于 channel 的 happened-before 有哪些
04 - 向 channel 发送数据的过程是怎样的
03 - 从 channel 接收数据的过程是怎样的
07 - 操作 channel 的情况总结
05 - 关闭一个 channel 的过程是怎样的
map
interface
标准库
goroutine 调度器
编译和链接
反射
数组和切片
GC
Powered By
GitBook
07 - 操作 channel 的情况总结
总结一下操作 channel 的结果:
操作
nil channel
closed channel
not nil, not closed channel
close
panic
panic
正常关闭
读 <- ch
阻塞
读到对应类型的零值
阻塞或正常读取数据。缓冲型 channel 为空或非缓冲型 channel 没有等待发送者时会阻塞
写 ch <-
阻塞
panic
阻塞或正常写入数据。非缓冲型 channel 没有等待接收者或缓冲型 channel buf 满时会被阻塞
总结一下,发生 panic 的情况有三种:向一个关闭的 channel 进行写操作;关闭一个 nil 的 channel;重复关闭一个 channel。
读、写一个 nil channel 都会被阻塞。
Previous
03 - 从 channel 接收数据的过程是怎样的
Next
05 - 关闭一个 channel 的过程是怎样的
Last modified
2yr ago
Copy link