线程、进程、协程
进程(系统级别的并发):计算机中一个程序在一个数据集上一次动态执行过程,主要包含三部分内容:
程序:描述进程的功能以及处理流程;
数据集:功能处理过程中需要的资源数据;
进程控制块(PCB):严格控制进程执行过程中的各种状态。
通俗来说,一个进程就是计算机上正在运行的一个程序; 一个软件程序要运行,需要将软件依赖的数据加载到内存中,通过 CPU 进行运算并按照程序定义的逻辑结构进行流程控制,知道数据处理完成后程序退出!在程序实际执行过程中,进程只是分配需要的数据资源,是程序的主体,在程序运行时真正运行的是线程,每个进程至少会有一个线程。
适用于计算密集型,主要是CPU计算。
线程(微进程:实现了进程内部的并发):计算机中程序运行的实际执行者就是线程,线程又称为轻量级进程,是一个 CPU 的执行单元,每个进程至少会有一个主线程用于执行程序。
适用于IO密集型,例如频繁的磁盘或网络IO。
协程(微线程:实现了单线程下的并发):又称微线程,纤程。英文名Coroutine。
线程和进程对比如下:
- 一个进程可以有多个线程,但是至少有一个主线程;
- 一个线程只能属于一个进程;
- 一个进程中多个线程,可以共享进程中提供的数据;
- CPU 运算分配给线程,CPU 上执行运算的是线程;
- 线程是最小的运行单元,进程是最小的资源管理单元。
串行、并行、并发
串行:就是传统意义上的同步、顺序的意思,按照一定的执行步骤顺序执行每个环节。
并行:就是传统意义上的异步、同时的意思,同时执行接受到的多个任务。
并发:同时接收到多个任务,同时执行多个任务,但是具体到某个时刻~只是在执行一个任务,只是在很短时间内在多个任务之间切换,模拟形成了多个任务同时执行的现象。