gpt4 book ai didi

c++ - 如何保证快速关闭我的 win32 应用程序?

转载 作者:可可西里 更新时间:2023-11-01 18:27:01 34 4
gpt4 key购买 nike

我有一个 C++ Win32 应用程序,它有许多线程,当用户想要关闭应用程序时,这些线程可能正忙于执行 IO(HTTP 调用等)。目前,我玩得很好,等待所有线程结束,然后从 main 返回。有时,这花费的时间比我想要的要长,事实上,让用户在我可以退出时等待似乎毫无意义。但是,如果我继续并从 main 返回,我可能会崩溃,因为在仍有线程使用对象时开始调用析构函数。

因此,认识到在理想的、柏拉图式的美德世界中,最好的做法是等待所有线程退出,然后彻底关闭,下一个最佳的现实世界解决方案是什么?简单地使线程退出得更快可能不是一种选择。目标是尽快让进程停止运行,例如,可以在其上安装新版本。我正在做的唯一磁盘 IO 是在事务数据库中,所以我不太担心拔掉它。

最佳答案

使用重叠 IO,这样您就可以始终控制处理 I/O 的线程,并且可以随时停止它们;您可以让它们等待 IOCP 并可以向其发布应用程序级关闭代码,或者您可以等待 OVERLAPPED 结构中的事件并等待“所有线程请立即关闭”事件。

总而言之,避免阻止您无法取消的调用。

如果你不能并且你被困在一个阻塞的套接字调用中做IO那么你总是可以从已经决定是时候关闭的线程中关闭套接字并且让正在做IO的线程总是检查重试之前的“立即关闭”事件...

关于c++ - 如何保证快速关闭我的 win32 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/209086/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com