线程与进程

1. 进程与线程

进程与线程

  • 进程:可被视为程序的一个实例,可以视为由指令和数据组成。进程就是用来加载指令,管理内存,管理io的。
  • 线程:一个进程之内可以有多个线程同时运行,线程可以视为是进程的一个子集。可被视为一个个指令流,将指令流中的一条条指令依次顺序执行。
    • 线程为最小调度单位,进程为资源分配的最小单位
    • 进程拥有共享的资源,如内存空间可以使内部的线程实现共享。

并行和并发

  • 并发是同一时间应对多件事情的能力
  • 并行是同一时间动手做多件事情的能力

同步和异步

  • 同步指的是需要等待结果返回才能继续运行
  • 异步是指无需等待结果返回,仍然能够运行
  1. 单核 cpu 下,多线程不能实际提高程序运行效率,只是为了能够在不同的任务之间切换,不同线程轮流使用 cpu ,不至于一个线程总占用 cpu,别的线程没法干活

  2. 多核 cpu 可以并行跑多个线程,但能否提高程序运行效率还是要分情况的 有些任务,经过精心设计,将任务拆分,并行执行,当然可以提高程序的运行效率。但不是所有计算任务都能拆分,也不是所有任务都需要拆分,任务的目的如果不同,谈拆分和效率没有意义

  3. IO 操作不占用 cpu,只是我们一般拷贝文件使用的是【阻塞 IO】,这时相当于线程虽然不用 cpu,但需要一直等待 IO 结束,没能充分利用线程。所以才有后面的【非阻塞 IO】和【异步 IO】优化