我有两个线程,彼此进行通信;每个线程使用'while(1)..'。现在我需要让线程在满足特定条件时退出,并因此完成应用程序。POSIX线程和退出线程
我的问题:是否可以安全地从线程返回(NULL),还是必须使用'pthread_exit'或'pthread_join'函数?
我有两个线程,彼此进行通信;每个线程使用'while(1)..'。现在我需要让线程在满足特定条件时退出,并因此完成应用程序。POSIX线程和退出线程
我的问题:是否可以安全地从线程返回(NULL),还是必须使用'pthread_exit'或'pthread_join'函数?
从线程函数返回null是安全的;等待它们的代码应该没问题。
POSIX说的pthread_exit()
:
到了pthread_exit隐式调用()由当比在main()的首次调用从一开始例程返回线程用于创建它的线程上。
你确实需要的东西,等待线程与pthread_join()
除非线程是用分离的属性创建或更新与pthread_detach()
分离。
调用pthread_exit(NULL)
并在线程的初始函数结束时返回NULL
应该是等效的。但是,单独执行这些操作都会导致资源泄漏。为避免这种情况,您必须在另一个线程的线程上调用pthread_join
,或者通过调用pthread_detach
或将其设置为在分离状态下启动,然后创建分离状态,将线程置于分离状态。