进程与线程的区别:
- 系统调度和资源拥有:进程是系统资源分配的基本单位,而线程是系统调度和任务执行的基本单位。线程几乎不占有系统资源,但它可以访问隶属进程的系统资源。
- 系统开销:进程有独立的地址空间,系统会为进程建立数据表来维护代码段、堆栈段和数据段,线程没有独立的地址空间,但线程有独立的运行栈和程序计数器(PC)。这就导致进程创建、切换、撤销时的开销都要比线程大。
- 通信:进程通过IPC进行通信,线程通过读写进程数据段进行通信。线程通信更加方便。
线程和协程的区别:
- 极高的执行效率:因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显;
- 不需要多线程的锁机制:因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。