目录
1.Linux网络IO模型
1.1 同步和异步、阻塞和非阻塞的区别
- `同步`:调用方需要主动等待结果的返回。
- `异步`:调用方调用了函数不需要等待结果的返回,后续通过回调等手段来处理结果。
- `阻塞`:在调用方拿到结果之前,线程会被挂起,不能做任何事。
- `非阻塞`:在调用方拿到结果之前,线程可以执行一些其他的事情,不会被挂起。
1.2 同步、异步、阻塞、非阻塞的相互组合模式
- `同步阻塞模式`:最常见的组合模式,调用方在拿到结果之前,线程处于挂起状态,直到有数据触达为止。
- `同步非阻塞模式`:调用方发起了函数调用,通过轮询的方式来检查结果,这个过程线程并未阻塞,但是轮询的目的是等待结果的返回。
- `异步阻塞模式`:最不常用的方式,这种方式没有发挥出异步的真实效果。
- `异步非阻塞模式`:调用方发起函数调用后,给接受方一个回调函数,然后自己去执行其他的方法。后续接受方有了数据后主动调用回调函数来实现结果的返回。
1.3 Linux的5种IO模型
Linux的5种IO模型:阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO,前面四种都是同步的模式,只有最后一种是异步的。
注