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