3.1、线程概述

news2025/6/11 11:22:00

3.1、线程概述

  • 1.线程概述
  • 2.线程和进程区别
  • 3.线程和进程虚拟地址空间
  • 4.线程之间共享和非共享资源
    • ①共享资源
    • ②非共享资源
  • 5.线程版本NPTL

1.线程概述

  • 与进程(process)类似,线程(thread)是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域,其中包括初始化数据段、未初始化数据段,以及堆内存段。(传统意义上的 UNIX 进程只是多线程程序的一个特例,该进程只包含一个线程)
  • 进程是 CPU 分配资源的最小单位,线程是操作系统调度执行的最小单位。
  • 线程是轻量级的进程(LWP:Light Weight Process),在 Linux 环境下线程的本质仍是进程。
  • 查看指定进程的 LWP 号:ps –Lf pid

2.线程和进程区别

  • 进程间的信息难以共享。由于除去只读代码段外,父子进程并未共享内存,因此必须采用一些进程间通信方式,在进程间进行信息交换。
  • 调用 fork() 来创建进程的代价相对较高,即便利用写时复制技术,仍然需要复制诸如内存页表和文件描述符表之类的多种进程属性,这意味着 fork() 调用在时间上的开销依然不菲。
  • 线程之间能够方便、快速地共享信息。只需将数据复制到共享(全局或堆)变量中即可。
  • 创建线程比创建进程通常要快 10 倍甚至更多。线程间是共享虚拟地址空间的,无需采用写时复制来复制内存,也无需复制页表。

3.线程和进程虚拟地址空间

使用fork()命令创建子进程的时候,采用读时共享写时复制的行为,但是父进程和子进程任然会存在自己独立的内核区和数据区。线程之间时共享内核区数据和大部分数据区也是共享的(栈和.text等会分成多个小部分分别留给每一个线程,但本质上还是共享的)。
在这里插入图片描述

4.线程之间共享和非共享资源

①共享资源

  • 进程 ID 和父进程 ID
  • 进程组 ID 和会话 ID
  • 用户 ID 和 用户组 ID
  • 文件描述符表
  • 信号处置
    文件系统的相关信息:文件权限掩码
    (umask)、当前工作目录
  • 虚拟地址空间(除栈、.text

②非共享资源

  • 线程 ID
  • 信号掩码(每个信号有自己的阻塞信号集等)
  • 线程特有数据
  • error 变量(每个线程有自己独有的错误号)
  • 实时调度策略和优先级
  • 栈,本地变量和函数的调用链接信息

5.线程版本NPTL

  • Linux 最初开发时,在内核中并不能真正支持线程。但是它的确可以通过 clone() 系统调用将进程作为可调度的实体。这个调用创建了调用进程(calling process)的一个拷贝,这个拷贝与调用进程共享相同的地址空间。LinuxThreads 项目使用这个调用来完成在用户空间模拟对线程的支持。不幸的是,这种方法有一些缺点,尤其是在信号处理、调度和进程间同步等方面都存在问题。另外,这个线程模型也不符合 POSIX 的要求。
  • 要改进 LinuxThreads,需要内核的支持,并且重写线程库。有两个相互竞争的项目开始来满足这些要求。一个包括 IBM 的开发人员的团队开展了 NGPT(Next-Generation POSIX Threads)项目。同时,Red Hat 的一些开发人员开展了 NPTL 项目。NGPT2003 年中期被放弃了,把这个领域完全留给了 NPTL
  • NPTL,或称为 Native POSIX Thread Library,是 Linux 线程的一个新实现,它克服了 LinuxThreads 的缺点,同时也符合 POSIX 的需求。与 LinuxThreads 相比,它在性能和稳定性方面都提供了重大的改进。
  • 查看当前 pthread 库版本:getconf GNU_LIBPTHREAD_VERSION

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通达信指标没有了怎么找回

通达信指标没有了可以恢复,不用太慌张,通达信会自动备份指标公式,可以通过备份文件找回。 1、找到通达信安装文件夹,一般是new_tdx,但是版本不同,安装文件夹可能有区别。本文以new_tdx这个文件夹为例。 如…

什么是零代码与低代码?有什么区别与联系?未来趋势

目前传统软件开发模式并不能很好地满足企业的需求:高人力成本、长研发时间、运维复杂,需求变化快,技术更新快,人员流失。这时零代码或低代码工具出现在市面上并被关注就是必然趋势了。对于不太了解两者的人来说,零代码…

【mysql性能调优 • 三】字符集和校验规则

前言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系…

Linux下Nginx配置SSL模块,Nginx安装SSL,Nginx支持https配置详细教程

前提:Linux安装Nginx,参考教程:CentOS7安装Nginx完整教程,Linux系统下保姆式安装Nginx教程 | 老麻 安装好Nginx之后,需要支持SSL时,要单独安装SSL模块,方法如下: 输入 ./nginx –V 命…

2345看图王阻止文件删除和U盘弹出 - 解决方案

2345看图王阻止文件删除和U盘弹出 - 解决方案前言2345看图王解决方案临时方案永久方案前言 用户在使用2345看图王查看图片后,可能会出现图片文件/文件夹无法删除或U盘无法弹出等问题,这是因为2345看图王的辅助模块正在占用图片文件,因此无法…

设计分布式日志系统

一、日志 1.1、什么是日志 日志是一种按照时间顺序存储记录的数据,它记录了什么时间发生了什么事情,提供精确的系统记录,根据日志信息可以定位到错误详情和根源。按照APM概念的定义,日志的特点是描述一些离散的(不连…

Spark----DataFrame和DataSet

Spark之DataFrame和DataSet 文章目录Spark之DataFrame和DataSetDataFrameDSL 语法创建DataFrame查看DataFrame的Schema信息只查看列数据的6种方式按照“age”分区,查看数据条数增加列withColumn修改列名withColumnRenamedRDD 转换为 DataFrameDataFrame 转换为 RDD转…

如何使用双轴XY平台绘制斜向多边形

1. 功能说明 本文示例将实现双轴XY平台绘制斜向多边形的功能。 2. 直角坐标机器人的结构设计 直角坐标机器人各个运动轴通常对应直角坐标系中的X轴、Y轴和Z 轴,其中X 轴和Y 轴是水平面内运动轴,Z轴是上下运动轴。在绝大多数情况下直角坐标机器人的各个直…

SpringBoot集成Easy-Es

文章目录SpringBoot集成Easy-Es一、集成demo二、索引CRUD创建索引查询索引更新索引删除索引三、数据CURD四、参数文档SpringBoot集成Easy-Es Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架&#xff0c…

C语言—实用调试技巧

实用调试技巧什么是bug?调试是什么?有多重要?什么是调试调试的基本步骤Debug和Release的介绍Windows环境调试介绍调试环境的准备快捷键的使用调试的时候查看程序当前信息查看断点信息查看临时变量的值查看局部变量的值查看内存信息查看汇编信…

PERSIANN 降雨数据使用教程

一、前言PERSIANN,“使用人工神经网络从遥感信息中估算降水”,是一种基于卫星的降水检索算法,可提供近乎实时的降雨信息。该算法使用来自全球地球同步卫星的红外 (IR) 卫星数据作为降水信息的主要来源。 红外图像的降水基于云顶温度和降水率之…

ESP32驱动1.28寸GC9A01播放视频(一、视频分辨率的调整和视频格式的转换)

ESP32驱动1.28寸GC9A01播放视频(一、视频分辨率的调整和视频格式的转换)播放前准备转换视频分辨率用FFmpeg将.MP4转换为.mjpeg格式FFmpeg的win10环境搭建FFmpeg的下载环境变量的搭建MP4转换成mjpeg格式总结播放前准备 1.28寸GC9A01屏幕的分辨率是240x24…

prometheus标签

004 标签 1. 作用 Prometheus中存储的数据为时间序列,是由Metric的名字和一系列的标签(键值对)唯一标识的, 不同的标签代表不同的时间序列,即 通过指定标签查询指定数据 。 指标标签实现了查询条件的作用,可以指定不同的标签过滤不同的数据…

类ChatGPT产品Claude上线Slack平台,一手实测体验在此

文章目录Claude-in-Slack自我介绍成语接龙数学能力代码能力其他总结Claude-in-Slack Claude是Anthropic推出的类ChatGPT对话机器人。Anthropic是一家由前OpenAI团队成员创立的人工智能初创公司。Claude免费、支持中文、无需注册,好心动,立刻上手测试。 …

第一个禁止ChatGPT的西方国家

意大利成为第一个有效禁止 ChatGPT 的西方国家。 由于可能违反隐私和数据法,该国的数据监管机构已下令开发聊天机器人的 OpenAI 停止运营。 意大利数据保护局 (GPDP) 提到了一些担忧,包括大量收集用户数据和存储以训练 AI 算法。 ChatGPT 是一种大型语…

Eyeshot Ultimate 2023 Crack

Eyeshot Ultimate 2023 Crack 已经引入了文档类。 工作区。文档现在包含绘制场景内容所需的所有数据。 2022版GEntities已被删除。 最后,一个真正的跨平台中立核心产品是可用的。 新功能 曲线、平面、曲面和体积网格。 屏幕空间环境光遮挡。 托管ReadDWG和ReadDXF类…

【SQL】一文带你掌握SQL基础语法

文章目录💖1,SQL概述🎈1.1 SQL简介🎈1.2 通用语法🎈1.3 SQL分类💖2,DDL:操作数据库🎈2.1 查询🎈2.2 创建数据库🎈2.3 删除数据库🎈2.4 使用数据库…

哪个品牌的触控笔质量好?ipad好用的触控笔

从这一点就能看出来,苹果原装的这一款电容笔,确实是贵得让人无法入手,一支就要一千多块钱。实际上,平替电容笔对没有太多预算的用户是个不错的选择。就拿正版电容笔来说,一正版的电容笔来说,就是4支平替电容…

Mybatis-Plus——实现公共字段自动填充(瑞吉外卖)

目录 一、公共字段自动填充 1.1 问题分析 1.2 实现思路及代码编写 二、 知识补充: ThreadLocal 2.1 使用背景 2.2 ThreadLocal介绍 2.2.1 设置当前线程的线程局部变量的值 public void set(T value) 2.2.2 返回当前线程所对应的线程 局部变量的值 public T ge…

Linux 下 QT 安卓开发环境搭建

1、采用QT5.14.2,主要是安装1、jdk 2、SDK 3、NDK 三个工具包,版本要匹配上; 备注:配置SDK需要注意: 解压SDK,进入到tools目录下,运行android可执行文件,会打开一个页面&#xff0c…