linux——线程的概念

一、核心真理

进程 = 独立大房子 线程 = 房子里的住户 一个房子里可以住很多住户(多线程) 住户共享客厅 / 厨房(全局数据),各有自己的小房间(私有栈)

二、官方定义

1. 什么是线程?

线程是 进程内部的最小执行单元 一个进程里可以创建 多个线程,它们:

  • 共享进程的内存、文件描述符、全局变量、资源
  • 各自独立跑自己的代码流

2. 操作系统本质

CPU 调度最小单位:线程 资源分配最小单位:进程

三、进程 VS 线程

对比项 进程 线程
资源隔离 完全独立,互不干扰 共享同一个进程资源
创建开销 极大(复制整个地址空间) 极小(只建栈 + PCB)
通信方式 麻烦:管道 / 共享内存 / 信号量 直接读全局变量就通信
崩溃影响 一个崩,不影响别的 一个线程崩 → 整个进程全崩
切换速度 飞快

人话总结:

  • 开进程 = 重新盖一栋楼
  • 开线程 = 楼里多雇一个员工干活

四、单线程 / 多线程 是什么?

1. 单线程程序

你写的普通 C 语言程序:

  • 整个进程里 只有一条代码执行流
  • 从上往下顺序跑

2. 多线程程序

一个进程里:

  • 同时有多条代码流 并发跑
  • 一起用同一份全局数据
  • 各自做不同任务

例子:

  • 聊天软件:一个线程收消息,一个线程发消息,一个线程弹窗
  • 服务器:一个线程处理一个客户端连接

五、线程共享什么?独有什么?

✅ 所有线程共享(大家都能改)

  1. 全局变量
  2. 堆内存(malloc/new)
  3. 文件描述符(打开的文件、socket)
  4. 进程 ID、工作目录、权限
  5. 信号处理方式

✅ 每个线程独有(自己私人)

  1. 栈空间(局部变量、函数参数)
  2. 线程私有寄存器(CPU 调度用)
  3. 线程 ID
  4. 私有信号屏蔽字

六、多线程优缺点

优点

  1. 创建、销毁、切换 超快
  2. 线程间通信 极简(直接读全局变量)
  3. 充分利用多核 CPU,并发效率高
  4. 资源共享,节省内存

缺点

  1. 全局数据要加锁(不然乱改→数据错乱)
  2. 一个线程崩溃 → 整个进程挂掉
  3. 逻辑复杂,容易死锁

七、CPU 怎么执行多线程?

并发(单核)

快速轮流切换线程,肉眼看起来像同时跑

并行(多核)

多个线程 真・同时 在不同核心跑

八、Linux 下线程特点

  1. Linux 内部:线程本质是 轻量级进程 LWP
  2. pthread 库:POSIX 标准线程(跨平台)
  3. 常用函数:
    • pthread_create 创建
    • pthread_join 等待回收
    • pthread_exit 退出
    • pthread_mutex 互斥锁

九、最经典一句总结

  1. 进程是资源分配单位,线程是调度执行单位
  2. 多进程隔离安全,多线程共享高效
  3. 线程共享堆、全局区;独有栈、局部变量

十、安装线程man page 命令

sudo apt-get install manpages-posix-dev

查看指定线程的LWP号:

线程号和线程ID是有区别的

线程号是给内核看的

查看方式

找到程序的进程ID

ps -Lf pid

相关推荐
流浪0012 分钟前
Linux系统篇26——通信(三)补:共享内存访问真的不进内核?
linux·运维·服务器
不会就选b5 分钟前
Linux之socket编程(七)----序列化与反序列化(1)
java·linux·服务器
zerwave26 分钟前
从零实现简化 DDS 完整技术文档(含模块作用与详细注释)
linux·c++·机器人
琥珀色糖10 小时前
Linux守护进程
linux·终端·守护进程·会话·进程组
开心大爆炸14 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
oushaojun214 小时前
大厂 C++ 面试:深度剖析 Linux Signal 信号机制(转)
linux
苏生Susheng15 小时前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
Ruiery15 小时前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器
分支预测失败15 小时前
RISC-V AIA 中断架构实战:从 PLIC 到 APLIC 与 IMSIC 的迁移
linux·后端
GeW15 小时前
RHCE学习拿证计划:锁定核心考点,实现备考效率最大化
linux