POSIX线程与线程退出

4
我有两个线程,彼此通信;每个线程都使用'while(1) ..'。现在我需要让线程在满足特定条件时退出,并因此完成应用程序。
我的问题是:仅从线程中返回(NULL)是否安全,还是我也必须使用'pthread_exit'或'pthread_join'函数?
2个回答

4

从线程函数返回null是安全的;等待它们的代码应该没问题。

POSIX关于pthread_exit()的说明如下:

当一个线程返回用于创建它的起始例程时,除了第一次调用main()的线程之外的线程会隐式调用pthread_exit()。

你确实需要使用pthread_join()来等待线程,除非该线程使用了分离属性或稍后使用pthread_detach()进行分离。


3

在线程的初始函数结束时调用pthread_exit(NULL)或返回NULL应该是等效的。然而,仅使用其中之一将导致资源泄漏。为了避免这种情况,您必须从另一个线程调用pthread_join来加入此线程,或者在创建线程之前将其设置为分离状态,方法是调用pthread_detach


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接