RSS
菜单

Go channel 源码解析:hchan 结构、环形缓冲与收发流程

channel 底层是 hchan 结构体:① 环形缓冲区 buf(有缓冲时存储数据);② sendx/recvx(发送/接收索引);③ sendq/recvq(等待队列:阻塞的发送者/接收者 goroutine);④ mutex 保护所有操作。发送流程:缓冲有空位 → 写入环形缓冲;无缓冲或缓冲满 → 挂到 sendq 并 gopark 阻塞;有等待接收者 → 直接复制给接收者。接收相反。关闭:closechan 置 closed 标志、唤醒所有等待者(收到零值)。内存布局:无缓冲有 recvq 直接拷贝语义。

下载推广海报

圈内讨论推广海报

《Go channel 源码解析:hchan 结构、环形缓冲与收发流程》完整推广海报
一起交流

全部回复 0

分享经验,让问题更进一步

讨论,从你的观点开始

还没有回复,欢迎补充经验或分享不同的思路。