Мое понимание было неверным. Несмотря на то, что из журнала отладки выяснилось, что он присоединяется к первому потоку, он не был Он присоединился к первому потоку, и это был второй, который вызвал тупик.
Однажды я обнаружил, что было гораздо проще отследить, почему первый поток завершал работу, но не сигнализировал об остальных.
Это может быть вызвано буферизацией puts
. Так что либо flush
вывод, установите его на sync
или разверните цикл так, чтобы объединения появлялись в разных строках, а обратный след подсказывал вам правильный.
Короче говоря, доверьтесь выходу из тупика. Если это противоречит вашим предположениям, подтвердите свои предположения.