Time.Sleep () блокирует контекст? - PullRequest
1 голос
/ 04 апреля 2019

Документация упоминает, что Сон приостанавливает текущую программу (G) как минимум на время d .

G не может находиться в очереди выполнения (серые кружки ниже) на время d.

enter image description here

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) очереди выполнения?

...