众所周知,IO就分两步,第一步等待,第二步数据传输
所以,一个高效的IO,就是等待的时间短,相反,如果等待时间过长,那么它就是一个低效率的IO。
五种IO模型:(以钓鱼为例子)
1.阻塞IO (钓鱼的时候就等鱼上钩,啥也不干)
2.非阻塞IO (钓鱼的时候,不断地检测雨是否上钩)
3.信号驱动IO (钓鱼的时候,在鱼竿上系上铃铛,只要铃铛响就是鱼上钩了)
4.多路复用IO (用多个鱼竿来钓鱼)
5.异步IO (我给你鱼竿和电话,你来帮我钓鱼,钓到了打电话给我就可以)
同步和异步:
所谓同步,在发出一个调用之后,如果这调用没有得到结果,就不会返回;如果返回就一定有返回值,所以同步就是调用者主动等待这个调用的结果。
异步:调用在发出后,就直接返回,所以异步没有返回结果;在调用发出后,被调用者通过状态、通知来通知调用者,或者通过回调函数来 处理这个调用。
阻塞与非阻塞:
阻塞:在调用结果返回之前,当前线程只能挂起,调用线程只有结果返回之后才可以
非阻塞:在不能立刻得到结果之前,这个调用不会阻塞当前线程。