Linux中如何理解线程?线程ID到底是什么?

news2025/4/16 12:02:03

朋友们好,这里简要介绍了进程和线程的区别以及对LINUX中线程ID的理解,本人目前理解尚浅,若文中有表述不当的地方还望理解并指正,谢谢大家!

文章目录

  • 一:进程和线程
  • 二:线程ID和进程地址空间布局

一:进程和线程

在这里插入图片描述

  • 进程是资源分配的基本单位。
  • 线程是调度的基本单位。
  • 线程可见进程的数据,但也拥有自己一部分数据:
    线程ID、一组寄存器、独立栈结构、errno、信号屏蔽字、调度优先级。

上述中**独立栈结构和线程各自拥有一组寄存器**是理解线程的关键。

进程的多个线程共享同一地址空间,因此代码段、数据段都是共享的,如果定义一个函数(在代码段),那么在各个线程中都可以调用,如果定义一个全局变量,那么在各个线程中都可以访问到。除此之外,各线程还共享以下进程资源和环境:

  • 文件描述符
  • 每种信号的处理方式
  • 当前工作目录
  • 用户的id和组id

二:线程ID和进程地址空间布局

pthread_t到底是什么类型?
取决于实现。对于目前Linux实现的NPTL实现而言,pthread_t类型的线程ID本质上就是进程地址空间上的一个地址。
在这里插入图片描述

💡理解pthread_t:

  1. 线程是一个独立的执行流。
  2. 线程一定会在自己运行的过程中,产生临时数据(调用函数、定义局部变量等)。
  3. 线程一定有自己独立的栈结构。

我们在Linux中使用的线程,都是由pthread库给我们提供的,操作系统只是提供了执行流,具体的线程结构由库来管理。
库如果要管理线程,那么必然在库中涉及到很多线程的结构体对象!

struct thread_info
{
	pthread_t tid;
	void* stack;
	...
	...
};

在这里插入图片描述
主线程的独立栈结构用的就是虚拟地址空间中的栈区,新线程用的栈结构,用的是库中提供的栈结构!

综上所述:pthread_t类型的线程ID本质上就是进程地址空间上的一个地址。

  1. pthread_create函数会产生一个线程ID,存放在第一个参数指向的地址中。该线程ID和进程ID不是一回事。
  2. 进程ID是属于进程调度的范畴。因为线程是轻量级线程,是操作系统调度的最小单位,所以需要一个数值来唯一的表示该线程。
  3. pthread_t pthread_self(void);谁调用这个函数,就可以获得谁的线程ID。

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

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

相关文章

5 项目部署

5.1 Linux-项目部署 5.1.1 环境 5.1.1.1 开发环境(dev) 外部用户无法访问,开发人员使用,版本变动很大 平时大家大多是在Windows或者Mac操作系统下去编写代码进行开发. 在开发环境中安装大量的软件,这样会导致环境的稳…

2022 年度盘点 | 更成熟的 AI,更破圈的技术狂欢

By 超神经内容一览:2022 年 AI 领域发展不断提速,新技术成果纷纷落地,模型迭代加速升级。本文总结了 2022 年 AI 领域各大公司的技术成就。关键词:年终盘点 大厂 技术创新2022 年在此起彼伏的咳嗽声中接近尾声,这一…

onCreate、onSaveInstanceState、onRestoreInstance一个参数和两个参数

Android Studio移动应用开发——onCreate、onSaveInstanceState、onRestoreInstance一个参数和两个参数_dear_jing的博客-程序员宅基地 - 程序员宅基地 在做Android生命周期实验过程中,把 Log.i(TAG, "(1) onCreate()") 写到了含有两个参数的函数 onSave…

HTML5 元素拖放

文章目录HTML5 元素拖放概述触发事件实现元素拖放功能dataTransfer元素拖动效果垃圾箱效果HTML5 元素拖放 概述 在HTML5中,我们只需要给元素添加一个draggable属性,然后设置该属性值为true,就能实现元素的拖放。 拖放,指的是“…

【Python】Numpy分布函数总结

文章目录总表均匀分布和三角分布幂分布与正态分布相关的分布与Gamma相关的分布极值分布总表 np.random中提供了一系列的分布函数,用以生成符合某种分布的随机数。下表中,如未作特殊说明,均有一个size参数,用以描述生成数组的尺寸…

【综合笔试题】难度 1.5/5,常规二叉树爆搜题

题目描述 这是 LeetCode 上的 95. 不同的二叉搜索树 II ,难度为 中等。 Tag : 「树」、「二叉搜索树」、「BST」、「DFS」、「递归」、「爆搜」 给你一个整数 n,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以…

2022出圈的ML研究:爆火的Stable Diffusion、通才智能体Gato,LeCun转推

这些机器学习领域的研究你都读过吗? 2022 年即将步入尾声。在这一年里,机器学习领域涌现出了大量有价值的论文,对机器学习社区产生了深远的影响。 今日,ML & NLP 研究者、Meta AI 技术产品营销经理、DAIR.AI 创始人 Elvis S.…

CSRF漏洞渗透与攻防(一)

目录 前言 什么是CSRF漏洞 CSRF实现流程 CSRF漏洞危害 XSS漏洞危害 CSRF与XSS区别 CSRF分类 GET型: POST型: CSRF漏洞案列模拟 CSRF常用Payload: CSRF漏洞挖掘 检测工具 CSRF漏洞防御 防御思路 我们该如何去防御CSRF漏洞…

LeetCode动态规划—打家劫舍从平板板到转圈圈(198、213)

打家劫舍平板板打家劫舍转圈圈打家劫舍(进阶版)平板板打家劫舍 转化子问题: 按顺序偷n间房子,就是考虑偷前n-1间房子还是偷前n-2间房子再偷第n间房子。 列出公式: res[n] max{ res[n-1] , 数组中最后一个数据res[n-…

企业信息化之源代码防泄密场景分析

场景描述 随着企业信息化发展迅速,越来越多的无形资产面临着被泄露,被盗取的,或员工无意导致的数据泄密风险。尤其是有源码开发的企业,源代码的安全更是重中之重,一旦泄密,有可能给企业带来不可估量的损失…

全程数字化的企业电子招标采购管理系统源码

全程数字化的采购管理 智能化平台化电子化内外协同 明理满足采购业务全程数字化, 实现供应商管理、采购需求、全网寻源、全网比价、电子招 投标、合同订单执行的全过程管理。 传统采购模式面临的挑战 如何以最合适的价格,找到最优的供应商,购买到最好的产品和服务?…

程序员必备网站,建议收藏!

俗话说的好,一个程序员,20%靠知识储备,80%靠网络搜索。 打开代码,打开Google,开始工作。 那么常用的写码软件,你知道几个呢? 下面我们来一起看一下常用的写码软件吧~ 建议收藏本文&#xff…

【算法】面试题 - 链表

链表相关面试题141. 环形链表问题:快慢指针为什么一定会相遇142. 环形链表 II问题:如何确认入口160. 相交链表237. 删除链表中的节点19. 删除链表的倒数第 N 个结点21. 合并两个有序链表23. 合并K个升序链表(两种解法)扩展&#x…

国产手机扬眉吐气,终于打击了苹果的嚣张气焰

苹果在9月份、10月份都取得了快速增长,而国产手机品牌持续下滑,但是11月份终于让国产手机捡回了主动权,11月份的数据显示有国产手机品牌的出货量大幅增长,而苹果的出货量却大幅下滑,国产手机成功反击了苹果。分析机构给…

Vue + SpreadJS 实现高性能数据展示与分析

Vue SpreadJS 实现高性能数据展示与分析 在前端开发领域,表格一直都是一个高频使用的组件,尤其是在中后台和数据分析场景下。但当一屏展示数据超过1000条数据记录时,会出现浏览器卡顿等问题,严重影响客户体验。为解决这些性能问…

Seay代码审计系统审计实战

今天继续给大家介绍渗透测试相关知识,本文主要内容是Seay代码审计系统审计实战。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未…

【算法题解】5. 删除有序数组中的重复项 + 移动零

文章目录删除有序数组中的重复项题目解题思路代码实现复杂度分析移动零题目解题思路代码实现复杂度分析删除有序数组中的重复项 题目 给你一个 升序排列 的数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新…

Python 并发编程实战,用多线程、多进程、多协程加速程序运行

Python 并发编程实战,用多线程、多进程、多协程加速程序运行 文章目录Python 并发编程实战,用多线程、多进程、多协程加速程序运行1、什么是CPU密集型计算、IO密集型计算?2、多线程、多进程、多协程的对比3、怎么根据任务选择对应技术&#x…

达梦数据成功过会!信创浪潮中如何成就一家国产龙头?

‍‍数据智能产业创新服务媒体——聚焦数智 改变商业2022年12月22日,上海证券交易所科创板上市委员会发布《2022年第110次审议会议结果公告》,武汉达梦数据股份有限公司(首发)符合发行条件、上市条件和信息披露要求。该公告标志着…

5.4 迭代语句

文章目录while语句使用while循环传统for语句传统for循环的执行过程for语句头中的多重定义省略for语句头的某些部分范围for语句do while语句迭代语句通常称为循环,它重复执行操作直到满足某个条件才停下来。while和for语句在执行循环体之前检查条件,do while 语句先执…