首页 > 解决方案 > 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) 上?

P3) GO 程序可以在特定的 context( ) 运行队列上调度 Goroutine吗?

标签: gogoroutine

解决方案


推荐阅读