主要从调度,拥有资源,并发性,系统开销,地址空间以及通信等方面来进行比较。
1.调度与拥有资源
线程是独立调度的基本单位,进程是拥有资源的基本单位。在同一进程中,线程的切换不会引起进程的切换;在不同进程中进行线程的切换,会引起进程切换。进程是拥有资源的基本单位,而线程不拥有系统资源,但线程可以访问隶属于进程的系统资源。
2.并发性
不仅进程之间可以并发执行,而且在同一个进程内的多个线程之间也可以并发执行,从而使系统有更好的并发性,提高了系统的吞吐量。
3.系统开销
由于创建进程或者撤销进程时,系统都要为之分配或回收资源,因此操作系统所付出的开销要远大于创建或撤销线程时的开销。
4.地址空间
进程之间的地址空间互相独立,同一进程的各线程之间共享进程的资源,某进程内的线程对其他的进程不可见。
5.通信
进程之间的通信(IPC)需要进程同步和互斥的辅助,以保证数据的一致性;而线程间可以直接读写进程的数据段来进行通信。