C 在linux中,如果子线程占用的时间超过阈值,如何杀死它

C 在linux中,如果子线程占用的时间超过阈值,如何杀死它,c,linux,multithreading,pthreads,C,Linux,Multithreading,Pthreads,我正在做一件事,如果需要10分钟以上才能完成,我需要杀死一个子线程 例如: void *child_thread(); void parent_thread() { pthread_t tid; pthread_create(&tid,NULL,child_thread,NULL); **pthread_join_on_wait(tid, NULL,10 mins);** } 我在网上找不到任何类似的东西,比如说加入等等之类的 是的,我可以使用,信号灯或条件。但

我正在做一件事,如果需要10分钟以上才能完成,我需要杀死一个子线程

例如:

void *child_thread();
void parent_thread()
{
    pthread_t tid;
    pthread_create(&tid,NULL,child_thread,NULL);
    **pthread_join_on_wait(tid, NULL,10 mins);**
}
我在网上找不到任何类似的东西,比如说加入等等之类的


是的,我可以使用,信号灯或条件。但是想再次检查是否有任何通用方法。

如前所述,您必须在父线程中处理计时器。你可以定期检查,同时做其他工作

该线程很好地退出会很好,但这并不总是可能的。例如,您正在调用一些不可信的第三方代码。网络浏览器一直都在这样做

要终止另一个线程的线程,可以向它发送信号
pthread_kill
向特定线程发送信号

您需要一个调用
pthread\u exit
的信号处理程序来终止该线程

需要记住的一点是,您在该线程中分配的任何内存都不会被释放,如果您持有任何锁,它们将保持原样。这不是一件好事


<>我可以告诉你一个更好的方法,但它适用于C++,而不是C.< /P>你不应该试图杀死线程。曾经这是个糟糕的方法。找到停止条件并让线程自动停止。如果我的孩子进入循环?那么正确的做法是什么呢?睡眠10分钟,如果线程没有退出,就杀死它?这可能不是您想要的,但您没有描述解决方案的任何约束条件。如果子线程在10分钟前兴奋,那么父线程将空闲一段时间。“如果孩子在10分钟内没有带着它离开,我准备杀死它。”manimuthuma在循环中设置了一个停止条件。例如,在循环的每个步骤中,线程都应该验证是否仍然允许它运行。