首页 > pthread_cancel取消执行递归函数的线程问题

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函数也执行完了,但是终端显示还没结束

【热门文章】
【热门文章】