我正在做一件事情,如果它需要超过 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 或类似的东西。
是的,我可以使用信号量或条件。但想仔细检查是否有任何通用方法。
最佳答案
如前所述,您必须在父线程中处理计时器。您可以定期检查并同时做其他工作。
如果该线程顺利退出会很好,但这并不总是可能的。例如,您正在调用一些不受信任的第 3 方代码。 Web 浏览器一直都在这样做。
要从另一个线程终止一个线程,您可以向它发送一个信号。 pthread_kill
向特定线程发送信号。
您将需要一个调用 pthread_exit
的信号处理程序来终止该线程。
要记住的一件事是,您在该线程中分配的任何内存都不会被释放,如果您持有任何锁,它们将保持原样。不是什么好事。
我可以告诉你一个更好的方法,但它适用于 c++,而不适用于 c。
关于c - 如果在 linux 中花费的时间超过阈值时间,如何终止子线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35793272/