非阻塞IO:在非阻塞IO中,一个进程发起一个IO操作后,如果数据还没有准备好,进程不会被挂起,而是立即返回,进程可以继续做其他的事情。这就像是你在发短信,你发送完短信后,不需要等待对方的回复,你可以做其他的事情。 同步/异步与阻塞/非阻塞的关系 这四个概念之间并没有绝对的对应关系。换句话说,同步可以是阻塞的...
从上面对比图片来说,阻塞IO模型是一个阻塞IO调用,而非阻塞IO模型是多个非阻塞IO调用+一个阻塞IO调用,因为多个IO检查会立即返回错误,不会阻塞进程。 而上面也说过了,非阻塞IO模型对于阻塞IO模型来说区别就是,内核数据没准备好需要进程阻塞的时候,就返回一个错误,以使得进程不被阻塞。 3-2、同步IO和异步IO 同步IO...
我调用了一个磁盘io,但是我不用等他io完,我可以去进行别的东西,只要他io完就会通知我去读取数据; 三、同步IO 非阻塞io在进行磁盘io的时候,虽然不需要等磁盘io这个过程,但是当磁盘io完成之后,他还需要把数据从内核空间移动到用户空间,这个时间也是阻塞的,这就是同步. 四、异步IO 我调用了磁盘io,我会创建一个...
blocking IO的特点就是在IO执行的两个阶段(准备数据、拷贝数据)都被block了。 非阻塞I/O(non-blocking IO) linux下,可以通过设置socket使其变为non-blocking。当对一个non-blocking socket执行读操作时,流程是这个样子: 个人理解: 当(APP)发起一个read IO: 1 . read调用系统的call,当内核数据没有准备好,立刻...
4. 非阻塞,就是调用我(函数),我(函数)立即返回,通过select通知调用者 同步IO和异步IO的区别就在于:数据拷贝的时候进程是否阻塞 阻塞IO和非阻塞IO的区别就在于:应用程序的调用是否立即返回 综上可知,同步和异步,阻塞和非阻塞,有些混用,其实它们完全不是一回事,而且它们修饰的对象也不相同。
5种,即 blocking-IO (阻塞IO),non-blocking-IO (非阻塞IO),IO-multiplexing(IO多路复用),signal driven IO(信号驱动),asynchronous IO(异步IO) 那么在了解这些模型之前,我们应该先知道什么是同步、异步,什么是阻塞、非阻塞 相关视频推荐 90分钟搞定底层网络IO模型,linux后台开发必须要懂得10种模型 ...
IO模型浅析-阻塞、非阻塞、IO复用、信号驱动、异步IO、同步IO 正文 IO模型 在《UNIX网络变成卷1:套接字联网API》这本书中,提到了五种I/O模型,分别为:阻塞式I/O、非阻塞式I/O、I/O复用(epoll、select都是一种I/O复用机制),信息驱动式I/O、异步I/O,下面具体的一一介绍。
同步IO和异步IO是更高层次的一个划分,阻塞IO/非阻塞IO同属于同步IO类别下,但是是不同的小类别。 1.同步IO(synchronous IO) 我以前有个误解:同步IO就代表着用户进程会在IO时等待,这个理解对了一半错了一半。看完下面就能豁然开朗了。 同步IO分为以下4种 ...
非阻塞:当你在等待电梯,此时电梯在其他楼层,采用非阻塞方式,可以采用楼梯代替电梯。 Java 代码举例 同步阻塞I/O(BIO) importjava.io.FileInputStream;importjava.io.IOException;publicclassSyncBlockingIOExample{publicstaticvoidmain(String[]args){try(FileInputStreamfis=newFileInputStream("example.txt")){intdata...