pthread_cancel取消执行递归函数的线程问题
背景:
现在有一个递归函数recurse_search(),主线程启动多个执行该函数的线程。因为存在递归一直无法执行完的情况。所以要求如果时间到了,就在主线程中pthread_cancel它
我的问题:
main函数
while(true){
sleep_ms(1000); //睡眠1000ms
if(use_time>6){
pthread_cancel(threads[exit_thread_id[0]]);
pthread_join(threads[exit_thread_id[0]],&ret);
cout<<"thread exit code"<<ret<<endl;
break;
}else{
continue;
}
}
recurse_search函数
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); //允许退出线程
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); //设置立即取消
pthread_testcancel();
recurse_search();
参考文章来自linux下pthread_cancel无法取消线程的原因
但是线程还是无法终止,我猜想是不是我的是递归的原因?
输出结果:
mian函数也执行完了,但是终端显示还没结束
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论