我有一个 C++ Win32 应用程序,当用户想要关闭应用程序时,它有许多线程可能正忙于执行 IO(HTTP 调用等)。目前,我玩得很好,等待所有线程结束后再从main
. 有时,这需要的时间比我想要的要长,事实上,当我可以退出时让用户等待似乎毫无意义。但是,如果我继续从 中返回main
,我可能会崩溃,因为析构函数开始被调用,而仍然有线程在使用这些对象。
所以,认识到在一个理想的、柏拉图式的美德世界中,最好的办法是等待所有线程退出然后干净地关闭,下一个最好的现实世界解决方案是什么?简单地使线程退出更快可能不是一种选择。目标是尽快让进程停止运行,例如,可以在其上安装新版本。我正在做的唯一磁盘 IO 是在事务数据库中,所以我并不十分担心拔掉插头。