Документация упоминает, что Сон приостанавливает текущую программу (G
) как минимум на время d .
G
не может находиться в очереди выполнения (серые кружки ниже) на время d
.
https://morsmachine.dk/go-scheduler
P
является контекстом. M
является потоком ядра
Предположим, что есть 8 потоков ядра (поскольку 8-ядерный процессор - runtime.NumCPU()
)
Продолжительность Go, поддерживающая runtime.GOMAXPROCS(runtime.NumCPU())
количество контекстов.
Использование GO версии 1.12
1) В какой очереди Goroutine (G
) ожидает продолжительности d
? Я вижу очередь выполнения (вверху серым цветом)
2) За это время d
, Планирует ли этот соответствующий контекст (P
) запланировать другой Goroutine из своей очереди выполнения в том же потоке ядра (M
)?
3) Может ли программа GO запланировать Goroutine в определенной контекстной (P
) очереди выполнения?