我有一个第三方库。该库具有名为 int foo()
的函数。函数是基于线程的,我无法更改函数的内容。 (它不属于我。)
当我调用该函数时,它被锁定并且不返回值。当函数被锁定时,有没有办法杀死这个基于线程的函数?例如,当函数在 5 秒内没有返回值时,我想在没有任何内存泄漏的情况下杀死它。
最佳答案
由于它是您无法控制的第三方库,因此您不能可移植地终止运行该代码的线程,尽管您可以调用 native_handle
并使用其线程终止工具,但您将最有可能引入泄漏。
请注意,线程位于同一地址空间中,因此一个线程的损坏或泄漏会影响您的整个程序。
我能想到的选项是生成一个新进程来运行该代码,如果 5 秒后它没有完成,您可以请求操作系统终止它。 {没有内存泄漏和资源被释放} :-) ...您最好的选择...
关于c++ - 使用超时终止函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35718952/