Linux 线程Detach&Join



1.等待线程
pthread_join 函数用来等待一个线程的结束,类似于进程的 wait 函数。
此函数将阻塞调用当前线程的进程,直到此线程退出。即这个函数是一个线程阻塞的函数,调用它的进程将一直等待到被等待的线程结束为,当函数返回时,处于被等待状态的线程资源被收回。如果执行成功,将返回 0,如果失败则返回一个非 0。此函数的第一个参数为被等待的线程标识符,此值为创建线程时返回的线程 ID,此线程必须同调用它的进程相联系,即创建该线程时不能指明此线程为独立的线程。第二个参数为一个用户定义的指针,指向一个保存等待线程的完整退出状态的静态区域,它可以用来存储被等待线程的返回值,如果在创建线程时 pthread_create 函数的第二个参数__attr 设置为 NULL,则此退出的状态信息会丢失。关于等待指定线程结束,需要注意以下几点:
(1)一个线程只能等待连接一个其他线程。
(2)发布连接操作的线程不一定是初始线程。
(3)如果有多个线程等待同一线程执行,只有一个线程能够得到正确的状态信息。
(4)有竞争关系的线程间的连接操作将返回一个错误。
(5)如果启动连接的线程被取消,则处于等待状态的线程可以被其他线程等待。
(6)如果目标线程在执行 pthread_join 前结束,则该调用将不会引起任何阻塞并立即返回。
(7)一个未被连接的非独立线程在线程结束前一直占用资源,直到创建它的进程结束。
pthread_join函数声明如下:
extern int pthread_join (pthread_t __th, void **__thread_return);
2.分离线程
分离线程是等待的逆操作。pthread_detach 库函数以欲操作的线程 ID 为其唯一的参数。如果执行成功,将使该线程与当前进程分离,使其成为一个独立的线程,并返回 0,当 thread终止时,系统将自动回收它的资源;如果执行失败,将不分离指定的线程并返回非零值。
pthread_detach 函数声明如下:
/* Indicate that the thread TH is never to be joined with PTHREAD_JOIN.
The resources of TH will therefore be freed immediately when it terminates, instead
of waiting for another thread to perform PTHREAD_JOIN on it. */
extern int pthread_detach (pthread_t __th) __THROW;
***********************************************

[原]在linux中查看两个函数:
 find / -name pthread.h -print
 cd /usr/include
 grep -n 'pthread_join' ./pthread.h
 grep -n 'pthread_detach' ./pthread.h

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值