time.sleep 也会把 G 放到 4叉堆上嘛

来源:1-9 神奇的内置数据结构

反卷斗士

2021-06-27 23:08:25

老师,想问一下 time.sleep 也会把 G 放到 4叉堆上嘛

写回答

1回答

Xargin

2021-06-29

http://img.mukewang.com/climg/60db2a22098eb3ed08780394.jpg


timer 这个结构会被放在四叉堆,


goroutine 是 g 结构,放在 timer.arg 这个字段里,然后执行 gopark 挂起这个 g,等待唤醒


等 timer 时间到了用 arg 能找到 g

执行 goready 唤醒 g 继续执行


这个流程在 runtime/time.go 下的 timeSleep 函数里

1

Go高级工程师实战营

慕课网与 GoCN 社区官方联手打造,定义行业Go高级人才培养标准,4个月,快速晋升为P6+/D7级高级人才。

458 学习 · 266 问题

查看课程