time.sleep 也会把 G 放到 4叉堆上嘛
来源:1-9 神奇的内置数据结构
反卷斗士
2021-06-27 23:08:25
老师,想问一下 time.sleep 也会把 G 放到 4叉堆上嘛
1回答
timer 这个结构会被放在四叉堆,
goroutine 是 g 结构,放在 timer.arg 这个字段里,然后执行 gopark 挂起这个 g,等待唤醒
等 timer 时间到了用 arg 能找到 g
执行 goready 唤醒 g 继续执行
这个流程在 runtime/time.go 下的 timeSleep 函数里
相似问题