Unix中的I/O模型

Unix定义了五种I/O模型

阻塞I/O

非阻塞I/O

I/O复用(select、poll、linux 2.6种改进的epoll)

信号驱动IO(SIGIO)

异步I/O(POSIX的aio_系列函数)

异步的处理

异步无非是通知系统做一件事情。然后忘掉它,自己做其他事情去了。很多时候系统做完某一件事情后需要一些后续的操作。怎么办?这时候就是告诉异步调用如何做后续处理。通常有两种方式:

将来式: 当你希望主线程发起异步调用,并轮询等待结果的时候使用将来式;

回调式: 常说的异步回调就是它。

常见模型

jdk

BIO

NIO

AIO

unix

select

poll

Epoll

select=>poll=>epoll=>libvent=>libuv

windows

windows i/o completion port

Reactor与Proactor

两种IO多路复用方案:Reactor and Proactor。

Reactor模式是基于同步I/O的,而Proactor模式是和异步I/O相关的。

reactor:能收了你跟俺说一声。proactor: 你给我收十个字节,收好了跟俺说一声。

参考资料

经典书籍

《Unix 网络编程》

other

常见通讯模型

java BIO/NIO/AIO 学习

https://www.jianshu.com/p/c5e16460047b