IO 多路复用是5种I/O模型中的一种。
1、同步vs异步,阻塞vs非阻塞
同步vs异步:
-
同步:相互牵制,两者之间有一定的约束
异步:两者之间无关,互不牵制
阻塞vs非阻塞
-
阻塞:发出一个请求,如果条件不满足,会一直等待直到条件满足
非阻塞:发出一个请求,如果条件不满足,则直接返回一个标志信息,而不会一直等待下去。
并发vs并行
-
并发数是指同时进行的任务数(如同时服务的 HTTP 请求).
并行数是可以同时工作的物理资源数量(如 CPU 核数)
比如去某部门办事需要依次去几个窗口,办事大厅里的人数就是并发数,而窗口个数就是并行度。
2、5种 I/O模型介绍
2-1 阻塞IO:
解释:直到等待数据准备就绪,内核将数据拷贝到用户线程,并返回结果给用户线程,用户线程才解除block状态。
优点:能够及时返回数据,无延迟;对内核开发者来说这是省事了;
缺点:对用户来说处于等待就要付出性能的代价了;
案例:我和朋友点完餐后,朋