进程与线程的区别
进程与线程是两个比较容易混淆的概念,但实际上他们是两个不一样的东西。
一、各自包含什么?
进程是线程的容器,因此简单地来讲,一个进程内部包含一个或多个线程。
线程是进程的一个实体,包含程序计数器(指向当前指令)、寄存器(存储线程内的局部变量)和堆栈。
二、可独立运行吗?
进程是正在运行程序的一个实例,因此进程可以独立运行。
线程依托于进程,线程不可独立于进程而运行。
三、拥有系统资源吗?
进程是系统进行资源分配基本单位,所以拥有系统资源。
线程不拥有系统资源,或者说很少。
四、独立还是共享
各个进程有独立的地址空间,即进程间互独立。
处在同一个进程内的所有线程共享此进程内的所有资源,即同一进程内的线程资源共享。
五、创建与切换的开销比较
从狭义上来讲,进程是正在运行的程序的一个实例,启动一个程序即创建一个进程,开销是很大的。
线程是一种轻量级的进程,线程比进程小,基本上不拥有系统资源,因此创建线程的开销比创建进程小得多。