【C/C++多线程编程之五】pthread线程深入理解

摘要:
多线程编程的pthread线程深刻理解pthread是POSIXthreads的缩写,也是POSIX的线程标准。之前的博客已经能够为您提供多线程的初步概念。在进一步学习线程同步等多线程的核心知识之前,有必要深入了解多线程。许多人忽略或回避这部分内容。直接的问题是学习者无法掌握多线程编程的内部原理,而且理解水平太浅。多线程进程是不同的:静态区域:存储全局变量,静态变量堆区域:动态分配上面的静态区域。线程堆和共享进程堆之间的差异。
多线程编程之pthread线程深入理解

      Pthread是 POSIX threads 的简称,是POSIX的线程标准
          前几篇博客已经能给你初步的多线程概念。在进一步学习线程同步等多线程核心知识之前,须要对多线程深入的理解。非常多人忽略或者回避这部分内容,直接的问题是学习者无法把握多线程编程的内在原理,理解的层次太浅。


          1.进程资源
           
         进程资源有存储资源其它资源。其它资源包括环境变量。地址,文件等。存储资源。进程的内存分配,博客【C解析之三】C语言的内存分配具有非常好的參考价值。

多线程进程有所不同:

         静态区:存储全局变量和静态变量
         堆区:动态分配区
上述静态区。堆区以及其它资源统称为进程的共享资源。共享资源被该进程的全部线程所共享。
         线程堆:线程自己维护的堆
         线程栈:线程自己维护的栈
上述的线程堆,线程栈是每一个线程独有的资源。线程间相互独立,不共享。当建立一个线程时。系统会为线程分配堆栈。

【C/C++多线程编程之五】pthread线程深入理解第1张                  
你可能已经发现,线程共享进程堆的同一时候。还自己维护一个堆栈

              
         2.线程私有数据

         多线程编程下。进程的全局变量通过存储于共享数据区,实现为全部线程 共用。同一时候,线程还能够有自己的全局变量,称为线程的私有数据

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


         3.线程消亡

         线程消亡时,线程自由的线程堆栈会被释放,归还给系统,同一时候线程的私有数据也会被释放。线程的共享资源。静态区。共享的进程堆以及其它资源。因为这些资源是线程间共享的。故不会随线程消亡而释放。

         须要特别注意的是。线程堆与共享的进程堆之间的差异。

         线程理解至此。之后的进一步学习。会有更深入的体会。

免责声明:文章转载自《【C/C++多线程编程之五】pthread线程深入理解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Golang学习笔记(一)-Go语言环境安装以及运行代码iOS开发-应用崩溃日志揭秘(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

深入理解JVM虚拟机3:垃圾回收器详解

本文转自:https://www.cnblogs.com/snailclimb/p/9086341.html 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章将同步到我的个人博客: www.how2pl...

libevent编程疑难解答

http://blog.csdn.net/luotuo44/article/details/39547391 转载请注明出处:http://blog.csdn.net/luotuo44/article/details/39547391 正常情况下应该在libevent的回调中调用event_add函数, 如果想下其他的线程中调用event_add,是线程不...

Android使用SurfaceView实现墨迹天气的风车效果

SurfaceView也是继承自View,它和我们以前接触到的View(Button、TextView等)最大的不同是,SurfaceView可以有一个单独的线程进行绘制,这个线程区别于UI线程(主线程),因此SurfaceView绘制并不占用主线程资源。 SurfaceView实现通常是自定义,继承SurfaceView并实现SurfaceHolder....

[ PyQt入门教程 ] PyQt5中多线程模块QThread使用方法

本文主要讲解使用多线程模块QThread解决PyQt界面程序唉执行耗时操作时,程序卡顿出现的无响应以及界面输出无法实时显示的问题。用户使用工具过程中出现这些问题时会误以为程序出错,从而把程序关闭。这样,导致工具的用户使用体验不好。下面我们通过模拟上述出现的问题并讲述使用多线程QThread模块解决此类问题的方法。 PyQt程序卡顿和无法实时显示问题现象 使...

API Monitor简介(API监控工具)

API Monitor是一个免费软件,可以让你监视和控制应用程序和服务,取得了API调用。 它是一个强大的工具,看到的应用程序和服务是如何工作的,或跟踪,你在自己的应用程序的问题。 64位支持 API监控支持监控的64位应用程序和服务。 64位版本只能用来监视64位应用程序和32位版本仅可用于监测的32位应用程序。 要监视在64位Windows的32位应用...

Linux系统编程 —互斥量mutex

互斥量mutex 前文提到,系统中如果存在资源共享,线程间存在竞争,并且没有合理的同步机制的话,会出现数据混乱的现象。为了实现同步机制,Linux中提供了多种方式,其中一种方式为互斥锁mutex(也称之为互斥量)。 互斥量的具体实现方式为:每个线程在对共享资源操作前都尝试先加锁,成功加锁后才可以对共享资源进行读写操作,操作结束后解锁。 互斥量不是为了消除竞...