Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > корректное завершение программы


Автор: box 27.9.2013, 16:25
всем привет!
есть прога,  она создает 3 треада, как завершить выполнение всей проги из любого из треада ?

Автор: vinter 27.9.2013, 16:54
Код

exit(0);
 
Но, вобще говоря, так дела не делаются

Автор: feodorv 27.9.2013, 17:14
Цитата(box @  27.9.2013,  17:25 Найти цитируемый пост)
как завершить выполнение всей проги из любого из треада ? 

Как "завершить" или как "корректно завершить"? Потому что, действительно, ответом на первый вопрос будет exit или ExitProcess...

Автор: volatile 27.9.2013, 20:44
Цитата(feodorv @  27.9.2013,  17:14 Найти цитируемый пост)
Как "завершить" или как "корректно завершить"? 

судя по названию тему, второе.

Корректно завершить, нужно в самих тредах.
Для сигнала им, нужно использовать что-то. (зависит от того что эти треды из себя представляют)


Автор: akizelokro 30.9.2013, 22:06
Корректно - нужно завершить выполнение всех трёх потоков, управление вернётся в основной поток программы, который создал эти потоки и ожидает их завершения, если нужно выйти и прервать выполнение программы, то взводится флаг экстренного выхода, основной поток считывает его и выходит. Если ждать очень неохота, пока всё это остановится, то взводится флаг, а основной поток постоянно считывает его, и при нахождении этого флага сам останавливает потоки и выходит.
Вроде бы так (надо быть уверенным, что потоки не вылетят в "undefined behaivour" при остановке выполнения, но это уже мелочи).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)