BIO,NIO,多路复用,AIO
概念理解
同步和异步 关注点在于处理机制,同步在于等待上一条语句调用后的返回结果才继续,异步在于事件响应回调机制,语句调用后直接返回,等触发事件之后,自动调用写好的回调函数
阻塞非阻塞 关注点在于线程是否挂起 阻塞在于得到结果之前会挂起线程,非阻塞在于不会挂起自己
IO流程
- 一是数据读取:把数据从磁盘读到内核空间,我们都知道,read属于系统调用,用户级线程是无法操作的,只能交给内核线程去处理,而内核线程首先要找到数据,并读到内核空间中。
- 二是数据复制:把数据从内核空间读取到用户空间。然后用户线程才可以使用这些数据
三大IO模型的解释
BIO
用上面的概念理解一下,write和read方法调用不会直接返回,而且还会把当前线程挂起来。这个有趣了,当前线程挂起还怎么操作呢?写和读其实都需要内核线程操作,内核线程在读和写的时候用户线程被挂起了。
BIO 在这两个步骤都是做不了其他事情的,在用户程序中看起来就是卡死。第一个步骤中用户线程阻塞挂起,第二个步骤中用户线