在 Go 中,對 time.Sleep() 的調用是否讓步于其他 goroutine?我有一種感覺,但在其他答案中(例如:Understanding goroutines) time.Sleep 沒有明確列為調度點。
1 回答

慕的地8271018
TA貢獻1796條經驗 獲得超4個贊
是的。請參閱調度程序中的搶占。
在之前的版本中,一個永遠循環的 goroutine 可能會使同一線程上的其他 goroutine 餓死,當 GOMAXPROCS 只提供一個用戶線程時,這是一個嚴重的問題。在 Go 1.2 中,這部分解決了:調度程序在進入函數時偶爾會被調用。這意味著任何包含(非內聯)函數調用的循環都可以被搶占,允許其他 goroutine 在同一線程上運行。
- 1 回答
- 0 關注
- 218 瀏覽
添加回答
舉報
0/150
提交
取消