为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
扬帆大鱼 2021-12-06 19:45:34
在 Go 中,对 time.Sleep() 的调用是否让步于其他 goroutine?我有一种感觉,但在其他答案中(例如:Understanding goroutines) time.Sleep 没有明确列为调度点。
查看完整描述

1 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

是的。请参阅调度程序中的抢占

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


查看完整回答
反对 回复 2021-12-06
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信