我可以从其线程函数中关闭/终止正在运行的线程吗?

时间:2013-12-31 09:14:46

标签: c

我创建了一个带有自定义线程功能的线程。我在线程函数中有一个条件,如果它变为true,我想从线程函数内部关闭线程。

有可能吗?

3 个答案:

答案 0 :(得分:1)

您可以从线程返回,如果要返回某个值,可以在该线程上使用pthread_join

答案 1 :(得分:0)

我假设您正在使用pthread进行线程功能。创建线程后,可以在自定义线程函数中调用pthread_detach()函数。在创建的线程中,只需从线程函数返回就足以关闭线程并释放与线程关联的所有资源。

答案 2 :(得分:0)

对于PThreads,有两种方法可以结束线程干净利落

如果您错过通过调用pthread_join()在未分离的线程上调用pthread_detach(),则线程使用的资源即使在线程结束后也不会被释放。 /强>

这可能会导致内存和/或其他系统资源短缺。注意不会发生这种情况。


第三个是结束线程只是使用pthread_cancel()取消它,它通常不是由线程本身启动的(因为我可以使用上述两种方法中的一种来结束自身),但是从另一个线程中,线程结束时没有意识到这一点,并且无法通知这样做。

很少会出现取消线程的需要,如果确实如此,可能会开始过度思考程序的设计。