【问题标题】:POSIX threads and exiting from a threadPOSIX 线程并从线程中退出
【发布时间】:2011-06-08 05:24:57
【问题描述】:

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

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

【问题讨论】:

    标签: c pthreads unix


    【解决方案1】:

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

    POSIX 提到pthread_exit()

    当除第一次调用 main() 的线程之外的线程从用于创建它的启动例程返回时,会进行对 pthread_exit() 的隐式调用。

    您确实需要一些东西来等待pthread_join() 的线程,除非该线程是使用 detached 属性创建的或稍后使用 pthread_detach() 分离的。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-10
        • 1970-01-01
        • 1970-01-01
        • 2020-03-15
        • 1970-01-01
        • 1970-01-01
        • 2013-10-23
        相关资源
        最近更新 更多