Было бы очень полезно, если бы вы указали свой язык программирования и библиотеку потоков.
Обычный способ управления ситуацией такого типа (то есть родительский поток должен дождаться завершения дочерних процессов перед завершением) - это вызвать функцию, предоставляемую библиотекой, обычно называемую join или wait .
pthread предоставляет, например, pthread_join .
Если вы порождаете процессы с помощью fork, вы должны использовать wait или waitpidв родительском, чтобы остановить, пока ребенок не завершит - попробуйте man waitpid или посмотрите на this .
Таким образом, вы можете сообщить своим детям, что вы собираетесь выйти, обычными способами,подождите, пока они не закроются и не прекратят работу, а затем аккуратно выйдите из основного цикла.
Помогает ли это?Это наименее грубый способ синхронизации завершения, если вы хотите активно уничтожать дочерние потоки, конечно, есть альтернативы (например, pthread_kill для pthreads).