线程相关知识

发布时间 2023-04-06 11:18:51作者: shubin

线程的概念

线程的概念

  • 线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程
  • 一个进程中是可以有多个线程
  • 多个线程共享同一个进程的所有资源,每个线程参与操作系统的统一调度
  • 可以简单理解成 进程 = 内存资源 + 主线程 + 子线 + .......

1.2 线程与进程

  • 线程与进程区别
    • 内存空间
      • 一个进程中多个线程共享同一个内存空间多个进程拥有独立的内存空间
  • 进程/线程间通讯
    • 线程间通讯方式简单
    • 进程间通讯方式复杂
  • 联系比较紧密选择多线程,不紧密选择多进程

1.3 线程资源

  • 共享进程的资源
    • 同一块地址空间
    • 文件描述符表
    • 每种信号的处理方式(如: SIG_DFL,SIG IGN或者自定义的信号优先级)
    • 当前工作目录
    • 用户id和组id
  • 独立的资源
    • 线程栈
    • 每个线程都有私有的上下文信息
    • 线程ID
    • 寄存的值
    • errno变量
    • 信号屏蔽字以及调度优先级

线程相关命令

线程命令介绍

在Linux 系统有很多命令可以查看进程,包括 pidstat 、top 、ps 可以查看进程,也可以查看一个进程下的线程

pidstat命令

  • -t : 显示指定进程所关联的线程
  • -p: 指定进程 pid

top命令

  • top 命令查看某一个进程下的线程,需要用到-H 选项在结合-p 指定 pid
    • -H :Threads-mode operation0

ps命令

  • ps 命令结合 -T 选项就可以查看某个线程