在 Go 中,对 time.Sleep() 的调用是否让步于其他 goroutine?我有一种感觉,但在其他答案中(例如:Understanding goroutines) time.Sleep 没有明确列为调度点。
1 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
是的。请参阅调度程序中的抢占。
在之前的版本中,一个永远循环的 goroutine 可能会使同一线程上的其他 goroutine 饿死,当 GOMAXPROCS 只提供一个用户线程时,这是一个严重的问题。在 Go 1.2 中,这部分解决了:调度程序在进入函数时偶尔会被调用。这意味着任何包含(非内联)函数调用的循环都可以被抢占,允许其他 goroutine 在同一线程上运行。
- 1 回答
- 0 关注
- 190 浏览
添加回答
举报
0/150
提交
取消