
二、chan源码解读
1、chan数据结构
|
|
buf
指向底层循环数组,只有缓冲型的 channel 才有。
sendx
,recvx
均指向底层循环数组,表示当前可以发送和接收的元素位置索引值(相对于底层数组)。
sendq
,recvq
分别表示被阻塞的 goroutine,这些 goroutine 由于尝试读取 channel 或向 channel 发送数据而被阻塞。
waitq
是 sudog
的一个双向链表,而 sudog
实际上是对 goroutine 的一个封装。
例如,创建一个容量为 6 的,元素为 int 型的 channel 数据结构如下 :
目录
相关文章
golang chan close源码分析
4、chan关闭流程 参考https://www.bookstack.cn/read/qcrao-Go
2021年9月17日
golang chan recv源码分析
2、chan读取源码分析 chan的读取源码入口是如下两个函数: 1 2 3 4 5 6 7 8 9 // 读取的数据放在el
2021年9月17日
golang chan send源码分析
3、chan写入源码分析 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
2021年9月17日
golang里面几个chan常见的坑
一、golang里面几个chan常见的坑 1、向chan发送数据 向已关闭的chan发送数据会panic
2021年9月17日
golang内联判断
一、什么是函数内联 内联优化是什么? 内联(inlining)是编程语言编译器常用的优化手段,其优化的对
2023年1月14日
赞赏
微信
