为什么一定要用pthread_join

Either pthread_join(3) or pthread_detach() should be called for each thread
       that an application creates, so that system resources for the thread can be
       released.  (But note that the resources of all threads are freed when the
       process terminates.)

 

 

 

extern int pthread_join __P ((pthread_t __th, void**__thread_return));
    第一个参数,为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值;  

   这个函数是一个线程阻塞的函数,调用它的函数将一直等待直到被等待的线程结束为止,当函数返回时,被等待线程的资源被收回;

  一个线程的结束有2种途径,一种,函数结束了,调用它的线程也就结束了,另一种是通过函数pthread_exit来实现;

  一个线程不能被多个线程等待,也就是说一个线程只能调用一次pthread_join,否则只有一个能正确返回,其他的将返回ESRCH错误;

在Linux中,默认情况下,一个线程被创建后,必须使用此函数对创建的资源进行回收,但是也可以设置线程的属性来设置当一个

线程结束时,直接回收此线程所占用的系统资源,

 

1.   线程里面调用 pthread_detach(pthread_self()) 这个方法最简单
2. 在创建线程的设置PTHREAD_CREATE_DETACHED属性
3. 创建线程后用 pthread_join() 一直等待子线程结束。

 

理由:

    1,回收线程资源,在线程结束时,如果不用,无法回收资源,会造成资源浪费,无法继续创建线程;

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值