gpt4 book ai didi

c++ - 我如何(安全地)中断单独线程上的计算?

转载 作者:太空狗 更新时间:2023-10-29 20:21:18 27 4
gpt4 key购买 nike

我有一个程序使用第 3 方库进行一些计算,我在与主应用程序不同的线程上启动该程序。不幸的是,此计算可能需要很长时间,并且不提供进度更新和取消的接口(interface)。

为了拥有这样的界面,我想创建一个“取消”按钮,它应该立即终止计算(并丢弃所有结果)。

我需要一些帮助(-代码片段表示赞赏-)如何最好地设置和干净地执行。这样做“安全”吗?

我目前正在使用 AfxBeginThread() 启动进程。

最佳答案

销毁(或暂停)未运行您的代码的线程是破坏程序的练习。

如果线程内有代码

EnterCriticalSection( &cs );
// do something
LeaveCriticalSection( &cs );

然后资源 cs 将永久归被销毁(或暂停的线程)所有。当其他任何地方都需要资源时,这就会死锁。

如果线程正在创建其他资源,例如文件、共享内存,这些也可能会泄漏,从而增加您的程序的不稳定性。

如果线程有一个取消回调,这应该被使用。我还尝试过错误注入(inject)的形式,当线程请求数据时,这些最终会“测试”第三方代码,使其执行未经测试和错误的路径。

与供应商交谈并要求取消方法,或寻找替代方法。

关于c++ - 我如何(安全地)中断单独线程上的计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44754968/

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