VS2013, C++ Я только что выпустил приложение для dll. Одна из функций приложения dll запускает поток _beginthread. В обычном программном потоке я использую мьютекс и управляющие потоки. Перед тем, как отменить регистрацию dll из основного приложения, я жду окончания завершения и закрытия обработчиков потоков.дочерние потоки C++, заканчивающиеся на выходе main() родительского потока?
Однако есть один случай, когда основное приложение может закрываться без ресурсов релиза правильным образом. Я имею в виду, не ожидая завершения дочернего потока и без закрытия обработчиков.
Есть ли риск, если основной выход из приложения? Есть ли риск, если я запустил приложение и потоки снова после выхода? Есть ли риск для ОС? Все ли потоки завершаются после основного выхода?
Я знаю, что это «грязное» решение, но по какой-то причине я не могу это изменить.
Заранее благодарим за советы.
Интересно! «приложение зависает, пока все ваши потоки заканчиваются», это не значит, что он вешает навсегда. Я предполагаю, что потоки также завершаются временем выполнения, не так ли? –
@ ValentinHeinitz Я настоятельно рекомендую прочитать связанную статью по этому вопросу ... Он разъясняет много вещей, которые у меня не было времени, чтобы объяснить себя. Кроме того, даже если среда выполнения завершает поток, вызывая «TerminateThread()» (или любые другие принудительные средства), все ресурсы, выделенные потоком, просачиваются, поэтому он все равно будет плохим решением. – mg30rg