关系&区别

进程(process)是资源分配的最小单位,有自己独立的地址空间,单个进程的崩溃不会影响其它进程;

线程(thread)是处理器调度的最小单位,共享进程空间,也有自己的独立内存(PC、栈、栈指针等空间),单个线程的崩溃会导致整个进程的崩溃,影响其它的线程;

对于一些要求同时进行且又要共享某些变量的并发操作,只能用线程,不能用进程。

一进程里至少有一个线程。

通俗的讲 “如果进程是工厂,线程就是工人”

优缺点

  1. 地址空间和其它资源
    • 进程间相互独立,同一进程的各线程间共享。
    • 某进程内的线程在其它进程不可见。
  2. 通信:进程间通信IPC
    • 线程间可以直接读写进程数据段(如全局变量)来进行通信
    • 进程同步和互斥需要辅助,以保证数据的一致性。
  3. 调度和切换
    • 线程上下文切换比进程上下文切换要快得多。
  4. 多线程OS中
    • 进程不是一个可执行的实体。