2011-01-13 105 views
3

我有两个线程,彼此进行通信;每个线程使用'while(1)..'。现在我需要让线程在满足特定条件时退出,并因此完成应用程序。POSIX线程和退出线程

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

回答

3

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

POSIX说的pthread_exit()

到了pthread_exit隐式调用()由当比在main()的首次调用从一开始例程返回线程用于创建它的线程上。

你确实需要的东西,等待线程与pthread_join()除非线程是用分离的属性创建或更新与pthread_detach()分离。

3

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