Когда я изучал Go, я изначально писал свои короткие программы, используя пустой цикл for, чтобы заблокировать выход программы, когда я запускал свои тестовые функции с ключевым словом go.Однако по мере увеличения размера моих тестовых / обучающих программ вся программа иногда зависала в случайных местах, а отладчик отключался, что сильно затрудняло отладку.
В конце концов я узнал, что причиной был пустой цикл for из небольшого обсуждения IRC, и заменил его блокирующим каналом, но я так и не узнал, ПОЧЕМУ кроме того, что это было связано с тем, как обрабатывает Goпланирования.
Какой механизм в фоновом режиме заставляет независимые подпрограммы блокировать целые программы, даже если для программы выделено много ядер, если есть пустой бесконечный цикл for?