吴果果课堂开课啦
之所以写这篇文章是在最近看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/55772739
select, poll, epoll 都是I/O多路复用的具体的实现
其实每个知识点都能引申出更多的知识点,欢迎补充,每挖一个点会继续升级,go on?
在学习时看的文章贴出来,同学们也可以看看呀
https://www.zhihu.com/question/32163005/answer/55772739
https://www.songma.com/p/dd05b079e308