корректное завершение программы

 
0
 
C++
ava
box | 27.09.2013, 17:25
всем привет!
есть прога,  она создает 3 треада, как завершить выполнение всей проги из любого из треада ?
Comments (4)
ava
vinter | 27.09.2013, 16:54 #

exit(0);
 
Но, вобще говоря, так дела не делаются
ava
feodorv | 27.09.2013, 17:14 #
Цитата (box @  27.9.2013,  17:25 findReferencedText)
как завершить выполнение всей проги из любого из треада ? 

Как "завершить" или как "корректно завершить"? Потому что, действительно, ответом на первый вопрос будет exit или ExitProcess...
ava
volatile | 27.09.2013, 20:44 #
Цитата (feodorv @  27.9.2013,  17:14 findReferencedText)
Как "завершить" или как "корректно завершить"? 

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

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

ava
akizelokro | 30.09.2013, 22:06 #
Корректно - нужно завершить выполнение всех трёх потоков, управление вернётся в основной поток программы, который создал эти потоки и ожидает их завершения, если нужно выйти и прервать выполнение программы, то взводится флаг экстренного выхода, основной поток считывает его и выходит. Если ждать очень неохота, пока всё это остановится, то взводится флаг, а основной поток постоянно считывает его, и при нахождении этого флага сам останавливает потоки и выходит.
Вроде бы так (надо быть уверенным, что потоки не вылетят в "undefined behaivour" при остановке выполнения, но это уже мелочи).
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit