c++ - 使用超时终止函数

标签 c++ linux

我有一个第三方库。该库具有名为 int foo() 的函数。函数是基于线程的,我无法更改函数的内容。 (它不属于我。)

当我调用该函数时,它被锁定并且不返回值。当函数被锁定时,有没有办法杀死这个基于线程的函数?例如,当函数在 5 秒内没有返回值时,我想在没有任何内存泄漏的情况下杀死它。

最佳答案

由于它是您无法控制的第三方库,因此您不能可移植地终止运行该代码的线程,尽管您可以调用 native_handle 并使用其线程终止工具,但您将最有可能引入泄漏

请注意,线程位于同一地址空间中,因此一个线程的损坏或泄漏会影响您的整个程序。

我能想到的选项是生成一个新进程来运行该代码,如果 5 秒后它没有完成,您可以请求操作系统终止它。 {没有内存泄漏和资源被释放} :-) ...您最好的选择...

关于c++ - 使用超时终止函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35718952/

相关文章:

C++ 使用 Map 中的参数调用函数

c++ - MQL4 到 Microsoft Visual Studio 2017 社区上的 C++ dll

c++ - 防止未定义的宏

regex - 从 netstat 命令中提取端口号

c++ - glutBitmapString() 未在此范围内声明

c++ - 在 NS-2 中绑定(bind)变量时出错

c - C 中的 isatty() 是做什么用的?

linux - Linux 的虚拟串行端口

linux - 使用 bash 判断是否安装了具有给定 UUID 的驱动器

linux - 具有三个到无限个参数的 bash 函数