猿问

time.Sleep() 是否让步于其他 goroutine?

在 Go 中,对 time.Sleep() 的调用是否让步于其他 goroutine?我有一种感觉,但在其他答案中(例如:Understanding goroutines) time.Sleep 没有明确列为调度点。


扬帆大鱼
浏览 191回答 1
1回答

慕的地8271018

是的。请参阅调度程序中的抢占。在之前的版本中,一个永远循环的 goroutine 可能会使同一线程上的其他 goroutine 饿死,当 GOMAXPROCS 只提供一个用户线程时,这是一个严重的问题。在 Go 1.2 中,这部分解决了:调度程序在进入函数时偶尔会被调用。这意味着任何包含(非内联)函数调用的循环都可以被抢占,允许其他 goroutine 在同一线程上运行。
随时随地看视频慕课网APP

相关分类

Go
我要回答