- 进程
进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。 - 线程
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。 - 区别
- 空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。
- 资源:同一个进程内的线程共享本进程的资源,比如说CPU、内存等等,但是进程之间的资源是相互独立的
- 调度:线程是处理机调度的基本单位,进程不是
- 优缺点
- 线程执行开销小,但不利于资源的管理和保护
- 进程执行开销大,但利于资源的管理和保护
- 多进程使用
对资源的管理和保护要求高,不限制开销和效率时时使用 - 多线程使用
要求效率高,频繁切换,对资源的管理和保护要求不是很高时使用