博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 线程Detach&Join
阅读量:2435 次
发布时间:2019-05-10

本文共 1313 字,大约阅读时间需要 4 分钟。

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

转载地址:http://dglmb.baihongyu.com/

你可能感兴趣的文章
Slurm——作业调度处理
查看>>
Lustre 维护
查看>>
Lustre—磁盘配额测试
查看>>
SSH加密密码中的非对称式密码学
查看>>
Mac Redis安装入门教程
查看>>
python3安装教程配置配置阿里云
查看>>
Mac快捷键和实用技巧
查看>>
Git的多人协作和分支处理测试
查看>>
mysql索引回表
查看>>
iterm2 保存阿里云登陆并防止断开连接
查看>>
brew安装
查看>>
mysql5.7初始密码查看及密码重置
查看>>
go语言实现2048小游戏(完整代码)
查看>>
动态二维码免费制作
查看>>
C语言贪吃蛇
查看>>
Python练手项目
查看>>
知网毕业论文爬取
查看>>
Django无法显示图片
查看>>
AOP技术基础
查看>>
聊聊Spring中的数据绑定 --- DataBinder本尊(源码分析)
查看>>