进程 & 线程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动。
进程是系统进行资源分配和调度的基本单位。
在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;
在当代面向线程设计的计算机结构中,进程是线程的容器。
程序是指令、数据及其组织形式的描述,进程是程序的实体。
系统运行一个程序,即是一个进程从创建,运行到消亡的过程。
线程(thread)是操作系统能够进行运算调度的最小单位。
线程,它被包含在进程之中,是进程中的实际运作单位。
一条线程指的是:进程中一个单一顺序的控制流。
一个进程中可以并发多个线程,每条线程并行执行不同的任务。
同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等。
同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。
上面摘抄自 百度百科,下面摘抄自 JavaGuide
多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈 和 本地方法栈,
所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,Linux 线程被称为轻量级进程。
并行 & 并发
并行 (Parallel) 是指:一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。
- 当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,同时进行
- 决定并行的因素不是 CPU 的数量,而是 CPU 的核心数量,一个 CPU 多个核也可以并行
并发 (Concurrent) 是指:在同一个时间段内,两个或多个程序执行,有时间上的重叠(宏观上是同时的,微观上仍是顺序执行)。
同步 & 异步
从方法调用的角度来讲,如果
