如果需要超过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之类的东西。
是的,我可以使用,信号量或条件。但是想要仔细检查是否有任何通用方法。
答案 0 :(得分:0)
如前所述,您必须在父线程中处理计时器。您可以定期检查并同时进行其他工作。
很好地退出该线程,但这并不总是可行的。例如,您正在调用一些不受信任的第三方代码。 Web浏览器一直这样做。
要从另一个线程终止线程,您可以向其发送信号。 pthread_kill
向特定线程发送信号。
您将需要一个调用pthread_exit
来杀死该线程的信号处理程序。
要记住的一件事是,您在该线程中分配的任何内存都不会被释放,如果您持有任何锁定,它们将保持原样。不是一件好事。
我可以告诉你一个更好的方法,但它适用于c ++,而不是c。