Планировщик Go управляет распределением ресурсов ЦП между программами.
Я полагаю, что в настоящее время это кооперативный планировщик, что означает, что ваш код должен дать планировщику возможность переключаться между контекстами на другие программы, либо совершая системные вызовы / вызовы функций, либо используя примитивы синхронизации, такие как atomic, mutex или channel. операции.
Если вы просто выполняете жесткие циклы в своих подпрограммах без какого-либо из вышеперечисленных, это приведет к истощению других подпрограмм, а также планировщика Go и сборщика мусора, так что будьте осторожны.
Похоже, что некоторые упреждающие методы планирования могут быть запланированы для Go1.12, см. Здесь:
https://github.com/golang/go/issues/24543
Дополнительная информация о планировщике Go:
https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html
Запланированы совместные мероприятия. Означает ли это, что выполнение подпрограмм, которые не приводят к выполнению, будет вызывать выполнение подпрограмм по очереди?