网上非常多IO资料,对新手来说。越看越晕。依据自己的理解。总结对照了一下BIO、NIO、AIO。

BIO:线程发起IO请求,无论内核是否准备好IO操作,从发起请求起,线程一直堵塞,直到操作完毕。

例如以下图:

BIO、NIO、AIO差别_io操作

NIO(reactor模型):线程发起IO请求,马上返回;内核在做好IO操作的准备之后。通过调用注冊的回调函数通知线程做IO操作。线程開始堵塞,直到操作完毕。例如以下图:

BIO、NIO、AIO差别_io操作_02

AIO(proactor模型):线程发起IO请求,马上返回。内存做好IO操作的准备之后,做IO操作,直到操作完毕或者失败,通过调用注冊的回调函数通知线程做IO操作完毕或者失败。例如以下图:

BIO、NIO、AIO差别_回调函数_03