通过IO模型带来的思考
IO模型
对于IO,我们经常可以听到诸如同步阻塞IO,同步非阻塞IO,异步IO等等,那么什么是异步/同步,什么是阻塞/非阻塞?首先一次IO在UNIX系统中分为两个步骤
1.发起IO请求:用户线程向操作系统内核发起IO请求
2.执行IO操作:当内核准备好数据可以提交给发起IO请求的线程
阻塞/非阻塞的区别:发起IO请求之后会一直等待直到获取数据则是阻塞,否则是非阻塞
同步/异步的区别:获取到的数据是自己主动拿到的则是同步,是被动拿到的则是异步
下面我用取快递这个例子来介绍一下UNIX的五种IO模型
众所周知吸管喝饮料分为两个步骤:1.打开快递柜(发起IO请求),2.取走快递(执行IO操作)
同步&阻塞IO
打开快递柜(发起IO请求),如果快递柜里没有东西(内核没有准备好数据),则一直等在快递柜旁等快递来(阻塞直到内核准备好数据),快递柜有了快