我正在将SDK开发为动态库(DLL / so)。用户可以在运行计算之前设置很多参数。但是我想提供一种动态更改参数的方法,该方法应停止当前计算并使用新参数重新启动它。因此,一般用法应类似于:
Client Caller thread -----> Call my SDK -----> Computation code
^
|
|
Client UI Thread ----> Request cancelation ------------
我对机制有很多疑问,我想知道这样做的最佳实践是什么。
1)如何处理中断?
std::atomic<bool>
?2)如果使用第二个选项,返回到发射点的最佳方法是什么?
longjmp
或类似的东西?为了进行适当的对象清理和资源回收,您需要引发异常或仅停止计算并让计算函数正常返回。