gpt4 book ai didi

填满 P 本地运行队列的 Go Scheduler?

转载 作者:IT王子 更新时间:2023-10-29 00:43:58 31 4
gpt4 key购买 nike

看看这张取自 morsmachine.dk/go-scheduler 的著名图片

enter image description here

灰名单是 P 的本地运行队列。如果此队列变空,它们将被全局运行队列中的 go routines 填充。

问题是,谁来填充 P 的本地运行队列

调度程序,没有同步或每个 P 自己做(互斥锁)?

附言文章省略了这些信息。

最佳答案

所有这些都来自golang.org/src/runtime/proc.go :

函数 schedule(调度程序)调用 findrunnable,它试图从另一个 P 窃取 G。如果失败,它将从全局运行队列返回一个 GG 然后在“当前”M 上执行。

此外,schedule 偶尔会“为了公平”检查全局运行队列:

// Check the global runnable queue once in a while to ensure fairness.
// Otherwise two goroutines can completely occupy the local runqueue
// by constantly respawning each other.

在所有这些中,只涉及一个锁,即lock(&sched.lock)

关于填满 P 本地运行队列的 Go Scheduler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32766160/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com