Qt篇: 浅谈进程和线程的关系

起初接触电脑时,就听说过程序和进程,偶然听别人问起:你知道什么是进程吗? -- 进程不就是任务管理的显示的吗。确实就是那个,那它到底是什么,却又半知半解。

本篇主要是以了解概念为主,了解什么是程序、进程和线程,只有了解之后在编程时才能更加轻松,和在面试时能够快速回答。

程序

程序是计算机系统中存储的数据文件,大致分为两种:

  1. 源代码程序:描述程序的行为和功能,属于文本文件;
  2. 可执行程序:这种文件是由源代码程序通过编译器编译得到的二进制文件,可以直接加载并运行。
什么是程序

进程

进程是一种计算机科学中的基本概念,表示程序在运行时的一个实例。它可以从广义和狭义两个角度来理解:

  1. 广义角度:进程是程序关于某个数据集合的一次运行活动。也就是说,它不仅包含了程序的代码,还包含了与程序执行相关的各种资源,如数据、打开的文件、网络连接等。这个角度强调了进程作为一个活动,涉及了程序的执行和与其交互的资源;
  2. 狭义角度:进程是指程序被加载到内存中并执行后得到的运行实体。狭义的定义更关注程序的代码被调入内存并开始执行这一过程,强调了进程作为操作系统管理的一个运行单元,包括其独立的内存空间、CPU时间片等。

程序和进程的关系

  1. 程序和进程的区别
  • 程序是计算机硬盘中的静态文件,存储在内存中的一段由二进制表示的文件;
  • 进程是内存中动态的运行实体,比如指针、代码段等;
  1. 程序和进程的关系
  • 一个程序可能对应多个进程:同一个可执行程序,被同时加载运行,每次运行产生一个进程;
  • 一个进程可能存在多个程序:一个程序的运行,可能需要依赖多个lib或dll动态库(均属于可执行程序)。

线程

  1. 线程概念
  • 进程中的一个执行单位;
  • 操作系统重的一个可以调度的实体;
  • 进程中相对独立的一个控制流序列;
  • 执行时的现场数据和其他调度所需的信息。
  1. 线程行和main函数的关系 main函数其实是进程里主线程的入口地址,可以参考下图为例:
线程与main函数关系
  1. 进程和线程的关系 在当代操作系统重,进程是操作系统分配资源的基本单位,线程是操作系统CPU调度执行的基本单位
  • 线程中可以存在多个线程,并且多个线程共享进程资源;
  • 线程是被调度的基本单元,而进程不是调度的基本单元;
  • 线程不能脱离进程而独立存在,必须依赖于进程运行;
  • 线程有生命周期,有诞生和死亡;
  • 任意线程都可以创建其他的线程。