进程(process):是一个“执行中的程序”,是操作系统进行资源分配的基本单元,是操作系统结构的基础。
线程(thread):操作系统调度的基本单位。
关系:
(1)一个线程只属于一个进程,一个进程可以有多个线程,但至少有一个线程,同一进程的多个线程之间可以并发执行。
(2)资源分配分配给进程,同一进程的所有线程共享该进程的所有资源。
(3)线程是进程中的一个执行单元,也是进程中的可调度实体。
(4)真正在处理机上运行的线程。
区别:
(1)拥有的资源:进程间资源相互独立,同一进程的线程之间资源共享。
(2)通信:进程之间的通信IPC,线程之间可以直接读写进程数据段(例如全局变量)来进行通信。
(3)调度和切换:线程上下文切换比进程上下文切换要快得多。
(4)创建和销毁的代价:进程创建和销毁的代价高,线程更适合做一些频繁创建和销毁的任务。
(5)安全性:进程的安全性比较高,线程存在安全问题。
(6)根本区别:进程是资源分配的基本单元,而线程是处理器任务调度和执行的基本单元。