• 多线程编程之pthread线程深入理解


    不同的平台和操作系统上 进程和线程的实现机制不完全一致  但是一般来说线程栈都是独立的 只要得到地址就可以相互访问

          Pthread是 POSIX threads 的简称,是POSIX的线程标准
              前几篇博客已经能给你初步的多线程概念,在进一步学习线程同步等多线程核心知识之前,需要对多线程深入的理解。很多人忽略或者回避这部分内容,直接的问题是学习者无法把握多线程编程的内在原理,理解的层次太浅。
     
              1.进程资源:
               
             进程资源有存储资源与其他资源。其他资源包含环境变量,地址,文件等。存储资源,进程的内存分配,博客【C解析之三】C语言的内存分配具有很好的参考价值。多线程进程有所不同:
             静态区:存储全局变量和静态变量
             堆区:动态分配区
    上述静态区,堆区以及其他资源统称为进程的共享资源。共享资源被该进程的所有线程所共享。
             线程堆:线程自己维护的堆
             线程栈:线程自己维护的栈
    上述的线程堆,线程栈是每个线程独有的资源,线程间相互独立,不共享。当建立一个线程时,系统会为线程分配堆栈。
                      
    你可能已经发现,线程共享进程堆的同时,还自己维护一个堆栈。
                  
             2.线程私有数据:
     
             多线程编程下,进程的全局变量通过存储于共享数据区,实现为所有线程 共用。同时,线程还可以有自己的全局变量,称为线程的私有数据。爱思考的读者可能会问,那线程的非全局变量在哪呢,别忘了非全局变量的空间在栈中哦。
     
             3.线程消亡:
     
             线程消亡时,线程自由的线程堆栈会被释放,归还给系统,同时线程的私有数据也会被释放。线程的共享资源,静态区,共享的进程堆以及其他资源,由于这些资源是线程间共享的,故不会随线程消亡而释放。
             需要特别注意的是,线程堆与共享的进程堆之间的差异。
             线程理解至此,之后的进一步学习,会有更深入的体会。
  • 相关阅读:
    转: 分布式系统编程,你到哪一级了?
    window屏幕朝向的调整 Alt + Ctrl + 上下左右箭头
    win10的安装与下载
    Zookeeper的学习材料
    配置文件的格式选型
    转: YAML 语言教程 from(阮一峰)
    Eclipse的 JSON Edit插件
    转: 如何为你的开源项目选择一个合适的开源协议?
    在Eclipse中使用SVN插件subclipse的教程
    我们在呼唤上帝还是在召唤恶魔——警惕人工智能
  • 原文地址:https://www.cnblogs.com/yyxayz/p/4103928.html
Copyright © 2020-2023  润新知