对linux中多线程编程中pthread_join的理解

分类: 程序员面试 linux学习2013-08-04 21:32 234人阅读 评论(0) 收藏 举报
多线程linuxpthread_join函数
在Linux中,默认情况下是在一个线程被创建后,必须使用此函数对创建的线程进行资源回收,但是可以设置Threads attributes来设置当一个线程结束时,直接回收此线程所占用的系统资源,详细资料查看Threads attributes。
其实在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的理解相关推荐

  1. Linux下多线程编程中信号量介绍及简单使用

    在Linux中有两种方法用于处理线程同步:信号量和互斥量. 线程的信号量是一种特殊的变量,它可以被增加或减少,但对其的关键访问被保证是原子操作.如果一个程序中有多个线程试图改变一个信号量的值,系统将保 ...

  2. linux线程多参数传递参数,Linux中多线程编程并传递多个参数

    解析Linux中多线程编程并传递多个参数 Linux中多线程编程并传递多个参数实例是本文讲解的内容,不多说,先来看内容. Linux下的多线程编程,并将多个参数传递给线程要执行的函数. 以下是实验程序 ...

  3. 详解Java多线程编程中LockSupport类的线程阻塞用法

    转载自  详解Java多线程编程中LockSupport类的线程阻塞用法 LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语.LockSupport实际 ...

  4. Linux下高性能网络编程中的几个TCP/IP选项

    Linux下高性能网络编程中的几个TCP/IP选项 转自:http://blog.chinaunix.net/u/12592/showart.php?id=2064847 最近在新的平台上测试程序,以 ...

  5. Java多线程编程中Future模式的详解

    转载自 https://www.cnblogs.com/winkey4986/p/6203225.html Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker ...

  6. Java多线程编程(2)--多线程编程中的挑战

    一.串行.并发和并行   为了更清楚地解释这三个概念,我们来举一个例子.假设我们有A.B.C三项工作要做,那么我们有以下三种方式来完成这些工作:   第一种方式,先开始做工作A,完成之后再开始做工作B ...

  7. [转]Linux 的多线程编程的高效开发经验

    Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别.不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断.本文中我们 ...

  8. Linux环境多线程编程基础设施

    Linux环境多线程编程基础设施 来源:Yebangyu 本文介绍多线程环境下并行编程的基础设施.主要包括: Volatile __thread Memory Barrier __sync_synch ...

  9. Linux 的多线程编程的高效开发经验

    背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别.不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断.本文 ...

最新文章

  1. 让XP恢复文件权限功能
  2. ikvm java转换成dll_利用IKVM.NET将Java jar包转换成可供C#调用的dll文件
  3. PowerDesigner-快速入门(极简教程)
  4. bing浏览器_微软全新Edge浏览器正式发布 支持macOS和iOS
  5. 三星GalaxyNote 10 Plus官方图曝光:前置相机竟换成了单摄?
  6. 系统登陆后自动注销的解决办法!
  7. 深度图像配准_巧解图像处理经典难题之图像配准
  8. Juniper SSG20 Config DHCP Server
  9. Windows系统结构图
  10. nmap和masscan
  11. Python中一个非常高效的json对比库--deepdiff
  12. 【游戏开发实战】教你在Unity中实现笼中窥梦的效果(RenderTexture | 视觉差| 多相机 | 渲染 | shader | 多场景)
  13. 计算机网络实验如何设置无线路由器密码,怎么设置路由器密码 路由器设置密码方法【图文】...
  14. 一个网站直接跳转引起的一些思考
  15. IPA 包不经过APP Store直接发布到网站供用户下载安装
  16. 文字logo设计的作用
  17. ASUS 华硕 NX580V 飞行堡垒 安装WIN7系统教程
  18. Luogu P1491 集合位置 (spfa--次短路)
  19. 邮件服务配置(虚拟域虚拟用户)
  20. Pandas DataFrame: groupby agg的使用

热门文章

  1. 计算机c语言笔试试题,计算机二级c语言笔试题和面试题答案(2019最新)
  2. 邀请合作如何表达_共商校院合作,共促产教融合,市卫校这个会议不一般!
  3. 使用js数组sort比较函数,实现按照对象的某个属性对数组进行排序
  4. 职称计算机xp练习题,职称计算机考试模块WindowsXP练习题(1)
  5. 改了两天的bug,一个JWT解决了。。。
  6. C++中STL-全排列
  7. HDU-一个人的旅行(最短路)
  8. 【树莓派】:配置+SSH+VNC,实现深度学习目标检测
  9. QtDesigner如何添加工具栏toolBar
  10. c++incline函数