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


Автор: Nloge 7.12.2002, 12:01
Создаю в программе новый Thread с помощью AfxBeginThread. Функция, составляюшая этот новый Thread (ThreadProc), имеет вид:
Код

try{
 <инициализация>
 do{
   <cчитаем>
   }while (!bStop)
}
catch(char* exception)
 {
   AfxMessageBox(exception);
 }
<освобождение ресурсов>
return 0;


Вопрос - будут ли освобождены ресурсы выделенные этому потоку, когда я закрываю программу?
bStop объявлена как глобальная переменная (volatile). Устанавливается она в true при нажатии на кнопку в основном окошке. Я так понимаю что ресурсы все же не освобождаютья, если я буду устанавливать bStop перед закрытием основной формы - поможет ли это?

Автор: suborg 8.12.2002, 07:17
На сколько я понимаю, ресурсы выделяются под процесс, потоки этого процесса между собой выделенные ресурсы делят, но если процесс завершается, то есть завершаются все его потоки, то соответственно все его ресурсы освобождаются.

Автор: Fantasist 8.12.2002, 11:01
Вообще-то, при завершении процесса, система освободит все ресурсы задействованные эти процессом. Не уверен, относиться ли это к глобальным аллокациям с помощью API(типа FileMapping), но скорее всего и это как-то отслеживается. Так же нужно знать - процесс не завершиться, пока не завершатся ВСЕ его потоки.

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