zoukankan      html  css  js  c++  java
  • [转]c++多线程编程之pthread线程深入理解

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

     
          Pthread是 POSIX threads 的简称,是POSIX的线程标准
              前几篇博客已经能给你初步的多线程概念。在进一步学习线程同步等多线程核心知识之前,须要对多线程深入的理解。非常多人忽略或者回避这部分内容,直接的问题是学习者无法把握多线程编程的内在原理,理解的层次太浅。
     
              1.进程资源:
               
             进程资源有存储资源与其它资源。其它资源包括环境变量。地址,文件等。存储资源。进程的内存分配,博客【C解析之三】C语言的内存分配具有非常好的參考价值。

    多线程进程有所不同:

             静态区:存储全局变量和静态变量
             堆区:动态分配区
    上述静态区。堆区以及其它资源统称为进程的共享资源。共享资源被该进程的全部线程所共享。
             线程堆:线程自己维护的堆
             线程栈:线程自己维护的栈
    上述的线程堆,线程栈是每一个线程独有的资源。线程间相互独立,不共享。当建立一个线程时。系统会为线程分配堆栈。
                      
    你可能已经发现,线程共享进程堆的同一时候。还自己维护一个堆栈。
                  
             2.线程私有数据:
     
             多线程编程下。进程的全局变量通过存储于共享数据区,实现为全部线程 共用。同一时候,线程还能够有自己的全局变量,称为线程的私有数据。

    爱思考的读者可能会问,那线程的非全局变量在哪呢。别忘了非全局变量的空间在栈中哦。

     
             3.线程消亡:
     
             线程消亡时,线程自由的线程堆栈会被释放,归还给系统,同一时候线程的私有数据也会被释放。线程的共享资源。静态区。共享的进程堆以及其它资源。因为这些资源是线程间共享的。故不会随线程消亡而释放。
             须要特别注意的是。线程堆与共享的进程堆之间的差异。
             线程理解至此。之后的进一步学习。会有更深入的体会。
  • 相关阅读:
    HttpRunner接口自动化测试框架
    使用Appium 测试微信小程序和微信公众号方法
    WiFi无线连接真机进行Appium自动化测试方法
    idea tomcat 乱码问题的解决及相关设置
    解决idea导入maven项目缺少jar包的问题
    Docker php安装扩展步骤详解
    Python之No module named setuptools 安装pip
    MySQL中group_concat函数 --- 很有用的一个用来查询出所有group by 分组后所有 同组内的 内容
    Nginx如何来配置隐藏入口文件index.php(代码)
    vueThink框架搭建与填坑(new)
  • 原文地址:https://www.cnblogs.com/lyggqm/p/11451991.html
Copyright © 2011-2022 走看看