吴果果课堂开课啦
之所以写这篇文章是在最近看redis底层时,看到IO多路复用,之前看过几遍,因为并不是很懂,看了就忘记,也是因为自己太菜,找了找文章整理了整理,其实至今还是有些囫囵吞枣,不对的地方欢迎拍砖
同步和异步针对应用程序来说,是程序中间的协作关系;阻塞与非阻塞更其实是单个进程的执行状态。同步有阻塞和非阻塞之分,异步没有,它一定是非阻塞的 ------转自《https://www.cnblogs.com/aspirant/p/6877350.html》
IO类型其实分为文件IO和网络IO
IO模型又分为阻塞IO,非阻塞IO,而redis、nginx底层所使用的多路复用
阻塞IO(BIO):也就是所有socket都为阻塞的,单线程、面向流、阻塞
非阻塞IO(NIO):一个线程使用一个选择器 Selector 通过轮询的方式去监听多个通道 Channel 上的事件,从而让一个线程就可以处理多个事件
多路复用IO:I/O multiplexing,在单个线程通过记录跟踪每一个Sock(I/O流)的状态来同时管理多个I/O流. 发明它的原因,是尽量多的提高服务器的吞吐能力
下图可以理解为:在同一个线程里面, 通过拨开关的方式,来同时传输多个I/O流
https://www.zhihu.com/question/32163005/answer/55772739select, poll, epoll 都是I/O多路复用的具体的实现
其实每个知识点都能引申出更多的知识点,欢迎补充,每挖一个点会继续更新,go on
在学习时看的文章贴出来,同学们也可以看看呀
https://www.zhihu.com/question/32163005/answer/55772739
https://www.jianshu.com/p/dd05b079e308
网友评论