go - time.Sleep() 会阻塞上下文吗?
问题描述
文档提到,Sleep 会暂停当前的 goroutine( G
) 至少持续时间 d。
G
不能在运行队列中(下面的灰色圆圈)持续时间d
。
https://morsmachine.dk/go-scheduler
P
是上下文。M
是内核线程
假设有 8 个内核线程(因为 8 核 CPU - runtime.NumCPU()
)
Go 运行时维护runtime.GOMAXPROCS(runtime.NumCPU())
上下文的数量。
使用 GO 版本 1.12
1) Goroutine() 在哪个队列中G
等待时长d
?我看到了运行队列(上面的灰色)
2) 在那个持续时间内d
,对应的 context( P
) 是否从它的运行队列中调度另一个 Goroutine 在同一个内核线程( M
) 上?
P
3) GO 程序可以在特定的 context( ) 运行队列上调度 Goroutine吗?
解决方案
推荐阅读
- ruby-on-rails - Rails - 数据库之间的集成
- rust - 发送 Vec
> 过频道 - java - GWT - 来自 com.google.gwt.i18n.client.NumberFormat 的带有 NumberFormat 的舍入模式
- html - 如何在输入字段旁边插入图像 - HTML?
- python - 有人可以解释我如何用 Pandas 中另一个表的第 2 列中的对象替换一个表中第 1 列中的对象吗?
- javascript - XPages | 复制保存冲突
- python - 带有硒的 Instagram 搜索栏
- vba - 重新查询一个对象会导致整个表单重新查询
- angular - 如何在 RXJS 6 中减去 2 个 observables
- python - 在 Python 中开发用于预测出勤率的神经网络