面试真题

Go · 中等 · 腾讯

golang channel的底层实现

中等 Go 🎤 腾讯
参考答案
结论:channel底层是hchan结构体,实现为带锁的环形缓冲队列及等待队列。核心要点:1.hchan含buf(环形队列)、dataqsiz、elemsize、sendx/recvx索引、recvq/sendq等待者链表、lock;2.无缓冲channel发送直接交接给接收者,缓冲满时发送者包装成sudog挂sendq阻塞;3.接收相反,从buf取或等发送者;4.close后置closed,唤醒所有等待者,接收返回零值与ok=false。对比:无缓冲同步,有缓冲异步解耦。
题目整理自公开面经,答案由校招宝自研生成,仅供参考