码迷,mamicode.com
首页 > 其他好文 > 详细

IO模型

时间:2019-05-28 18:42:03      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:socket   支持   tps   mac   通知   api   linu   操作系统   哪些   

IO模型

Redis是单线程的,为什么支持高并发?node.js,nginx也是单线程的。
除了Redis数据是存在内存里面的,所有操作都是内存级别的,还有其它原因导致它有如此高的性能?

多路复用(事件轮训)

多路复用是一种IO模型,那系统中还有哪些IO模式?一起来看看吧

常见的IO模型

同步阻塞IO(Blocking IO)

传统IO模型,请求server,如果server没有返回,client会一直等待,直到超时

同步非阻塞IO(Non-blocking IO)

请求server,无论是否成功,server都会立刻返回结果

IO多路复用(IO Multiplexing)

即Reactor设计模式,select/epoll的好处就在于单个process就可以同时处理多个网络连接的IO。它的基本原理就是select/epoll这个function会不断的轮询所负责的所有socket,当某个socket有数据到达了,就通知用户进程。
现在操作系统多路复用API已经不再使用select系统调用,而改用epoll(Linux)和kqueue(FressBSD和MacOS)

异步IO(Asynchronous IO)

即Proactor设计模式,client发起read操作,就可以进行其它操作,server操作成功会通知client

参考:https://www.cnblogs.com/findumars/p/6361627.html

IO模型

标签:socket   支持   tps   mac   通知   api   linu   操作系统   哪些   

原文地址:https://blog.51cto.com/13990437/2401672

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!