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

时间:2016-03-04 10:11:00

标签: 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);**
}

我无法在Net上找到类似于join_on_wait之类的东西。

是的,我可以使用,信号量或条件。但是想要仔细检查是否有任何通用方法。

1 个答案:

答案 0 :(得分:0)

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

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

要从另一个线程终止线程,您可以向其发送信号。 pthread_kill向特定线程发送信号。

您将需要一个调用pthread_exit来杀死该线程的信号处理程序。

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

我可以告诉你一个更好的方法,但它适用于c ++,而不是c。