У меня есть приложение C ++ Win32, у которого есть несколько потоков, которые могут быть заняты вводом-выводом (HTTP-вызовы и т. Д.), Когда пользователь хочет закрыть приложение. В настоящее время я играю хорошо и жду завершения всех потоков, прежде чем вернуться из main
. Иногда это занимает больше времени, чем хотелось бы, и действительно, кажется бессмысленным заставлять пользователя ждать, когда я смогу просто выйти. Однако, если я просто вернусь из main
, я, скорее всего, получу сбой, поскольку деструкторы начнут вызывать, пока еще есть потоки, использующие объекты.
Итак, признавая, что в идеальном, платоническом мире добродетели, лучше всего было бы дождаться завершения всех потоков, а затем полностью завершить работу, какое следующее лучшее решение для реального мира? Простое ускорение выхода потоков может быть неприемлемым вариантом. Цель состоит в том, чтобы как можно быстрее остановить процесс, чтобы, например, поверх него можно было установить новую версию. Единственный дисковый ввод-вывод, который я выполняю, - это транзакционная база данных, поэтому я не очень беспокоюсь о том, чтобы отключить ее.