【Linux多线程】-Linux进程VS线程

进程和线程

进程是承担分配系统资源的基本实体,线程是调度的基本单位。

线程共享进程数据,但也拥有自己的一部分数据:

  • 线程ID。
  • 硬件上下文数据(cpu寄存器的值)调度角度
  • 各自的独立栈结构
  • errno(C语言提供的全局变量,每个线程都有自己的。)
  • 信号屏蔽字
  • 调度优先级。

进程的多个线程共享

因为是在同一个地址空间,因此所谓的代码段(Text Segment)、数据段(Data Segment)都是共享的:

  • 如果定义一个函数,在各线程中都可以调用。
  • 如果定义一个全局变量,在各线程中都可以访问到。

除此之外,各线程还共享以下进程资源和环境:

  • 文件描述符表。(进程打开一个文件后,其他线程也能够看到)
  • 每种信号的处理方式。(SIG_IGN、SIG_DFL或者自定义的信号处理函数)
  • 当前工作目录。(cwd)
  • 用户ID和组ID。

进程和线程的关系

进程和线程的关系如下图:
在这里插入图片描述
在此之前我们接触到的都是具有一个线程执行流的进程,即单线程进程。

上一篇:QKeyEvent和QMouseEvent键盘事件和鼠标事件


下一篇:前端react&vue3——实现滚动到底加载数据-⭐vue3 实现滚动加载