ch06sched/basic: “P 的结构” 介绍是否有误?
cnbailian opened this issue · 1 comments
cnbailian commented
动机
《6.1 基本知识》中 “P 的结构” 介绍与后面《6.3 调度循环》中对于调度的描述不符
需求说明
“P 的结构”:
当引入了 P 之后,P 持有 G 的本地队列,而持有 P 的 M 执行完 G 后在 P 本地队列中没有发现其他 G 可以执行时, 会从其他的 P 的本地队列偷取(steal)一个 G 来执行,只有在所有的 P 都偷不到的情况下才去全局队列里面取。
findrunnable
流程部分引用:
尝试从本地队列中取 g,如果取到,则直接返回,否则继续从全局队列中找 g,如果找到则直接返回;
检查是否存在 poll 网络的 g,如果有,则直接返回;
如果此时仍然无法找到 g,则从其他 P 的本地队列中偷取;
所以调度流程优先级应该是 本地 > 全局 > steal 吧,还是说有其他我没有注意到的地方
changkun commented
你好,你的疑惑是正确的,非常感谢指出这种低级错误 Orz