背景:
现在有一个递归函数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函数也执行完了,但是终端显示还没结束