关于Linux 线程pthread_join的用法
来源:互联网 发布:hishop销客多源码 编辑:程序博客网 时间:2024/06/05 04:09
其实在Linux中,新建的线程并不是在原先的进程中,而是系统通过一个系统调用clone()。该系统copy了一个和原先进程完全一样的进程,并在这个进程中执行线程函数。不过这个copy过程和fork不一样。 copy后的进程和原先的进程共享了所有的变量,运行环境。这样,原先进程中的变量变动在copy后的进程中便能体现出来
那么pthread_join函数有什么用呢???
pthread_join使一个线程等待另一个线程结束。
代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行
所有线程都有一个线程号,也就是Thread ID。其类型为pthread_t。通过调用pthread_self()函数可以获得自身的线程号。
在多线程编程的时候我们往往都是以for循环的形式调用pthread_join函数,既然运行prhtead_join之后主线程就阻塞了,也没法调用后面的pthread_join,那么以for循环有什么用呢?
主线程是在第一个线程处挂起。
比如有:
pthread_join(1,NULL);
pthread_join(2,NULL);
pthread_join(3,NULL);
pthread_join(4,NULL);
pthread_join(5,NULL);
实际上主线程在pthread_join(1,NULL);这里就挂起了,在等待1号线程结束后再等待2号线程。
当然会出现3,4,5比1,2先结束的情况。主线程还是在等待1,2结束后,发现3,4,5其实早已经结束了,就会回收3,4,5的资源,然后主线程再退出。
- 关于Linux 线程pthread_join的用法
- 关于Linux线程pthread_create(),pthread_join()
- Linux线程-pthread_join
- Linux线程之pthread_join
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- Linux线程pthread_exit 和 pthread_join
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- pthread_join函数及linux线程
- 01串 (南阳理工oj 题目252)
- Oracle 12c创建用户和切换CDB、PDB
- redis
- vue.js数据绑定
- android APP内显示PDF文件
- 关于Linux 线程pthread_join的用法
- leetcode--Reverse Linked List
- Spark Streaming实例
- 6.mysql
- 游戏服务器架构的演进简史
- springcloud(一):大话Spring Cloud
- UTF-8编码时,PHP如何正则匹配中文汉字?亲测可用
- python django 多级业务树形结构规划及页面渲染 概述: 在项目中,父级到子级结构并不少见,如果仅仅的两层树形结构,我们可以使用数据库的外键设计轻松做到,子级业务表设计一字段外键到父级
- Spring Boot干货:常用属性汇总