IO模型

去年自己手绘的一些关于io模型的图,暂未加上之前的描述文字,有时间逐步加上文字描述!!!

阻塞IO模型:系统会一直阻塞在数据copy方面,直到内核缓冲区有数据了,然后进行copy,才会解除阻塞,这样其实会一直阻塞下去

非阻塞IO模型:与阻塞io不同的是,这里不再阻塞在调用上,而是用一个轮询查看是否需要进行数据copy,大家可能有疑问,这样还不如阻塞在copy阶段 干嘛一直占用cpu。其实是这样的,对比来看,阻塞io的话用户线程是无法释放的,而非阻塞io则可以返回一个error,告诉你没有数据, 那么你可以去做相应的处理

信号驱动IO模型:信号通知用户进程何时开始一个IO操作

异步IO模型:与信号驱动的区别在于:信号驱动由内核告知用户进程何时可以进行一次i/o操作;异步I/O由内核告知何时I/O完成

多路复用IO模型:现在市面上,咱们耳熟能详的异步事件驱动的io技术有netty、nginx、nodejs等等,所以现在对这类技术的呼声非常高

像netty,官方号称,在他们机器上测试能达到12 -13万的qps。关于这里的实现方式,大家可以看一下netty的代码,有几种是实现方式

单线程、多线程、主从多线程的Reactor模式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容