文章目录
图解channel之数据结构
注:本文以Windos上Go SDK v1.18进行讲解
func f() {
ch := make(chan int)
...
}
v <- ch1
type hchan struct {
qcount uint // 数组长度,即已有元素个数
dataqsiz uint // 数组容量,即可容纳元素个数
buf unsafe.Pointer // 数组地址
elemsize uint16 // 元素大小
closed uint32
elemtype *_type // 元素类型
sendx uint // 下一次写下标位置
recvx uint // 下一次读下标位置
recvq waitq // 读等待队列
sendq waitq // 写等待队列
lock mutex
}