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