POSIX线程并退出线程

时间:2011-01-13 00:53:19

标签: c pthreads unix

我有两个线程,彼此沟通;每个线程都使用'while(1)..'。现在我需要让线程在满足特定条件时退出,从而完成应用程序。

我的问题:从线程中'返回(NULL)'是否安全,或者我是否必须使用'pthread_exit'或'pthread_join'函数?

2 个答案:

答案 0 :(得分:4)

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

POSIX说pthread_exit()

  

当首次调用main()的线程以外的线程从用于创建它的start例程返回时,对pthread_exit()进行隐式调用。

除非使用分离属性创建线程或稍后使用pthread_join()分离,否则您确实需要等待线程pthread_detach()的东西。

答案 1 :(得分:3)

调用pthread_exit(NULL)并在线程初始函数结束时返回NULL应该是等效的。但是,单独执行其中任何一项都会导致资源泄漏。要避免这种情况,您必须从另一个线程调用线程上的pthread_join,或者通过调用线程上的pthread_detach将线程置于分离状态,或者在创建线程之前将其设置为以分离状态启动。