首页 >> 知识 >> 进程、线程、协程、并发、并行、IO多路复用

进程、线程、协程、并发、并行、IO多路复用

目录

一、什么是IO操作

二、进程、线程、协程

1、进程是资源分配的基本单位

2、线程是任务调度的基本单位

3、协程—由线程创建并全权负责的小弟

三、并行、并发及其与CPU内核数的关系

1、理解并行与并发的区别

2、进程、线程与CPU核数之间的关系

3、同一个进程里的线程可以并行执行吗(满足条件时可以)

四、IO多路复用

五、参考文(zi)献(liao)

我竟然妄想在小小的篇幅下把这四件事讲明白,离谱,但又不太离谱~

在多线程、多进程、并行、并发这几个概念中,有很多知识点容易让人第一次看完后还是模棱两可的,这里主要是对概念细节的记录,因为我原来学的时候多少也是似懂非懂的,最近又系统地过了一遍,发现了原来很多认知上的小误解,在这里统一做下梳理与记录。 

一、什么是IO操作

IO 即 Input 与 Output 首字母的组合,就是表示对数据的输入输出操作。

第一次接触 IO 是学习单片机的时候,把单片机的引脚叫做 IO 口,单片机的 IO 口操作就是对高低电平的读写操作,但本质上还是对字节流的读写。网络编程中的IO其实也是一样的,都是对字节流的读写操作:读写文件是IO操作、socket/TCP/UDP这些都是IO操作,只要有数据交换的地方都有IO操作。

二、进程、线程、协程

三者间的关系:没有线程的进程是没有灵魂的,协程是线程养的一帮小弟,完全由线程统一调控。

1、进程是资源分配的基本单位

何谓资源分配?资源分配就是系统分配给这个进程的内存空间、CPU、磁盘IO等等。进程本身不能执行任何任务。可以这么理解:进程只是为线程抢了一块肥沃的土地,并配备了一系列齐全的农具,除此之外基本啥也不干了,而对这块地什么时候种什么植物的操作(CPU任务调度)就需要进程通过创建线程来执行了。

2、线程是任务调度的基本单位

何谓任务调度?任务调度就是CPU执行具体的任务(一般是调用函数)。线程是由进程创建的,一个进程至少有一个线程,没有线程的进程就是 si 的,啥也干不了!所以说线程是进程的灵魂,同时,只要有线程存在,其就必须依附于一个进程上,也就是说没有肉体依附的灵魂卵用没有~

对于打开一个APP来说,这个APP就是一个进程,而在这个APP上播放音乐、即时聊天等就是由这个进程创建的一个个线程实现的。

3、协程—由线程创建并全权负责的小弟

协程是由线程创建的执行体,可以理解为线程创建的“小线程”。协程的切换同样需要现场保护、恢复现场等操作,但协程比线程更轻量,由于不需要操作系统交互,其切换开销要比线程切换开销小;而线程的切换除了寄存器上下文的切换,还需要进行优先级、内核态进出等等

网站地图