面试的时候,竟然几次都被问到这个问题,其实这种问题稍微百度一下,就有一大堆,大体总结一下吧。不然下次问的时候又是回到的遮遮掩掩的。说不到点子上。

根本区别:

进程是操作系统分配的基本单元,但线程是任务调度和执行的基本单元

开销方面:

每个进程都有自己独立的代码和数据空间(程序上下文),程序直接的切换会有较大的开销。

线程可以看做是轻量级的进程,同一类线程共享代码和数据空间。每个线程都有自己独立运行的栈和线程计数器(PC),线程之前切换开销小

所处环境:

操作系统中能同时运行多个程序,也就是进程。

而同一个进程有多个线程同时运行,是通过 CPU 调度,在每一个时间片中只执行一个线程。

内存资源分配方面:

系统在运行的时候会为每一个进程分配不同的内存空间,

而对线程而言,除了 CPU 之外,系统不会为线程分配内存空间,线程所使用的资源来自于所属的进程,线程组直接只能共享资源。

包含关系:

只有一个线程的进程可以看做是一个单线程。

如果一个进程有多个线程,则执行过程不是一条线的,而是多条线共同完成的,线程是进程的一部分,所以线程也被称为轻量级进程。


搬运地址:

进程和线程的主要区别(总结)