我理解使用pthread_cancel
与PTHREAD_CANCEL_ASYNCHROUNOUS
异步取消线程仅适用于纯计算而不适用于复杂功能。如果我们使用PTHREAD_CANCEL_DEFERRED
,如果函数不包含pthread
取消点,尤其是调用第三方库,则无法保证可以完成此操作。
1)我看到一些使用进程间通信的建议fork
子进程,kill
发生超时时。
2)还有评论说我们应该使用pthread_create
和共享变量来优雅地突破/退出循环并执行清理。如果函数本身是长时间阻塞调用(例如需要几秒钟),我不太确定如何实现它。
哪种方法更好,我该如何实施?欢迎任何建议。