我创建了一个带有自定义线程功能的线程。我在线程函数中有一个条件,如果它变为true,我想从线程函数内部关闭线程。
有可能吗?
答案 0 :(得分:1)
您可以从线程返回,如果要返回某个值,可以在该线程上使用pthread_join。
答案 1 :(得分:0)
我假设您正在使用pthread进行线程功能。创建线程后,可以在自定义线程函数中调用pthread_detach()函数。在创建的线程中,只需从线程函数返回就足以关闭线程并释放与线程关联的所有资源。
答案 2 :(得分:0)
对于PThreads,有两种方法可以结束线程干净利落。
pthread_detach()
分离线程。要结束它,请拨打pthread_exit()
。要从线程内部查找线程的phtread-id,请使用phtread_self()
。pthread_exit()
并在创建结束的线程时,在收到的pthread-id上调用另一个线程pthread_join()
。 如果您错过通过调用pthread_join()
在未分离的线程上调用pthread_detach()
,则线程使用的资源即使在线程结束后也不会被释放。 /强>
这可能会导致内存和/或其他系统资源短缺。注意不会发生这种情况。
第三个是结束线程只是使用pthread_cancel()
取消它,它通常不是由线程本身启动的(因为我可以使用上述两种方法中的一种来结束自身),但是从另一个线程中,线程结束时没有意识到这一点,并且无法通知这样做。
很少会出现取消线程的需要,如果确实如此,可能会开始过度思考程序的设计。