Не выходите из программы Kotlin, пока выполняется несколько сопрограмм

В нескольких точках моей программы я launch чтобы запустить сопрограмму, которая выполняет некоторые фоновые задачи. Затем, в какой-то момент, я возвращаюсь от main функции. Упрощенная версия моей программы может выглядеть так:

 fun main(args : Array<String>) { launch { delay(10000) // some long running operation println("finished") } } 

Теперь сопрограммы запускаются так, как ожидалось, и запускают операцию – и затем программа выходит. Если я не вернусь из main или замените launch thread , все будет работать так, как ожидалось. Итак, как я могу , учитывая, что я не отслеживаю все сопрограммы, запущенные в моей программе (следовательно, я не могу использовать .join() или .await() ), убедитесь, что все сопрограммы завершены до выхода моей программы?

Итак, как я могу, учитывая, что я не отслеживаю все сопрограммы, запущенные в моей программе (следовательно, я не могу использовать .join () или .await ()), убедитесь, что все сопрограммы завершены до выхода моей программы?

Вам нужно отслеживать и ждать результатов в какой-то момент, чтобы убедиться, что эти сопрограммы завершены. Это потому, что «сопрограммы похожи на потоки демона»:

Активные сопрограммы не поддерживают этот процесс. Они похожи на потоки демона.

Это не относится к обычным Java Thread которые по умолчанию не являются демонами .