同步io:阻塞io、非阻塞io、多路复用
异步io:异步io
阻塞io:进程发起read()请求,内核如果没有准备好数据,进程会等待-阻塞。
非阻塞io:进程发起read()请求,当内核没有准备好数据,会返回error给进程,手动不断发送请求,知道读到数据。
多路复用:进程直接发送大量请求,只要其中有一个内核准备好了数据,就可以进入下一步-从内核拷到用户空间,通过事件驱动-select/poll/epoll来实现。
异步io:进程发送请求的一瞬间,切到其他进程干别的事,等从内核空间拷到用户空间之后再通知用户拷贝已完成。
四种io操作的区别: