当前位置: 首页 > news >正文

【Linux】了解pthread线程库,清楚并没有线程创建接口,明白Linux并不存在真正意义的线程(附带模型图详解析)

前言

大家好吖,欢迎来到 YY 滴Liunx系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁
主要内容含:
在这里插入图片描述

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

  • YY的《C++》专栏
  • YY的《C++11》专栏
  • YY的《Linux》专栏
  • YY的《数据结构》专栏
  • YY的《C语言基础》专栏
  • YY的《初学者易错点》专栏
  • YY的《小小知识点》专栏
  • YY的《单片机期末速过》专栏
  • YY的《C++期末速过》专栏
  • YY的《单片机》专栏
  • YY的《STM32》专栏
  • YY的《数据库》专栏
  • YY的《数据库原理》专栏

目录

  • 一.Linux不存在真正的线程(没有实体):Linux并没有提供thread_struct结构体(TCB)
  • 二.了解线程pthread原生线程库:不会直接提供线程创建的接口
    • 1.pthread原生线程库不提供线程创建接口
    • 2.从Linux系统模型角度看看我们创建的线程
  • 三.线程与进程相关知识点
    • 1.线程的官方概念&进程的对比
    • 2.线程准确定义&运行本质

一.Linux不存在真正的线程(没有实体):Linux并没有提供thread_struct结构体(TCB)

  • OS如果真的支持线程,也必须 管理线程 ——先描述(结构体),再组织(数据结构)
  • 比如操作系统提供task_struct结构体(PCB),而并没有提供thread_struct结构体(TCB),进一步佐证我们的结论

结论:

  • 所以说Linux没有真正的实体线程,只是一股进程内部的执行流

二.了解线程pthread原生线程库:不会直接提供线程创建的接口

1.pthread原生线程库不提供线程创建接口

我们回顾点一中得出的结论:

  • 所以说Linux没有真正的实体线程,只是一股进程内部的执行流

来试着看看pthread在这种机制下的表现:

  • C++内部的多线程,本质就是对原生线程库pthread的封装
  • pthread线程库是Linux系统中用于支持多线程编程的标准库,它基于POSIX标准,提供了创建、管理和控制线程的一整套API。
  • Linux没有真正的线程,只有轻量级进程的概念,所以Linux Os 只会提供 轻量级进程 创建的系统调用,不会直接提供线程创建的接口
    在这里插入图片描述

2.从Linux系统模型角度看看我们创建的线程

  • CPU看到的还是PCB,但已经比传统的进程要更轻量化了
    在这里插入图片描述

三.线程与进程相关知识点

1.线程的官方概念&进程的对比

  1. 线程是比进程更加轻量化的一种执行流
  2. 线程是在进程内部执行的一种执行流, 进程是承担系统资源的基本实体
  3. 线程是CPU调度的基本单位

2.线程准确定义&运行本质

  1. 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是 “一个进程内部的控制序列”
  2. 一切进程至少都有一个执行线程
  3. 线程在进程内部运行, 本质是在进程地址空间内运行
    在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化
  4. 透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了 线程执行流

http://www.mrgr.cn/news/51430.html

相关文章:

  • OGG错误:ORA-28000:the account is locked
  • js实现简单的【发布者-订阅者模式】
  • 工信部 | 信息技术应用创新人才证书哪个科目好考?
  • 栈的压入、弹出序列
  • vector使用与实现
  • 基于华为昇腾910B,实战 InternLM2.5-7B-Chat 模型推理
  • 还在百度搜PDF工具,完全免费的神器推荐给你-PDF24工具箱!
  • Vue2组件
  • 神经网络模型量化代码解析
  • Docker常用命令分享二
  • DC系列靶机-DC5
  • Unity3D 游戏性能优化全流程建设详解
  • 基于Arduino做的“鱿鱼游戏”BOSS面具,支持动作检测
  • 对接优惠折扣影票接口有什么好处?
  • 一款极高性价比的高性能CMOS低压差线性稳压器——ADM7172深度解析与应用简介
  • [vue2] 由mapbox2升级为mapbox3遇到的矢量底图样式丢失问题解决办法
  • linux下编译鸿蒙版boost库
  • PG 17 增量备份功能介绍
  • 手把手教你玩转Midjourney,保姆级教程公开
  • Mac中使用brew安装指定版本软件包