添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

《Windows核心编程系列》十异步IO之IO完成端口

《Windows核心编程系列》十谈谈同步设备IO与异步设备IO之异步IO

《Windows核心编程系列》九谈谈同步设备IO与异步设备IO之同步设备IO

IO多路复用

select、kqueue、poll/epoll、overlapped I/O等

再谈select, iocp, epoll,kqueue及各种I/O复用机制

那么,为什么epoll,kqueue比select高级?

答案是,他们无轮询。因为他们用callback取代了。想想看,当套接字比较多的时候,每次select()都要通过遍历FD_SETSIZE个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍。这会浪费很多CPU时间。如果能给套接字注册某个回调函数,当他们活跃时,自动完成相关操作,那就避免了轮询,这正是epoll与kqueue做的。

ASIO:

“C++的I/O框架,逐渐成为Boost库的一部分。it’s like ACE updated for the STL era。”

支持select、epoll、IOCP等IO模型;

libevent:

由Niels Provos用C编写的一个轻量级的I/O框架。它支持kqueue和select、poll和epoll。

广为人知的有ACE,Libevent这些,他们都是跨平台的,而且他们自动选择最优的I/O复用机制,用户只需调用接口即可。说到这里又得说说2个设计模式,Reactor and Proactor。

Libevent是Reactor模型,ACE提供Proactor模型。实际都是对各种I/O复用机制的封装。

Reactor:

libevent/libev/libuv/ZeroMQ/Event Library in Redis

Proactor

IOCP/Boost.Asio

linux下还是Reactor把, 没有os支持, Proactor玩不转.

IO设计模式:Reactor和Proactor对比

关于同步,异步,阻塞,非阻塞,IOCP/epoll,select/poll,AIO ,NIO ,BIO的总结

参考:

https://www.jianshu.com/p/5cf67fab6d61

https://blog.csdn.net/HQ354974212/article/details/76423050?locationNum=2&fps=1

https://blog.csdn.net/zj510/article/details/44652923

https://blog.csdn.net/u010807583/article/details/52433159

https://blog.csdn.net/zhangzeyuaaa/article/details/42609723

缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save

3、在根目录_config.yml里添加配置: jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true