如何解决选择/轮询与异步I / O的性能
| 从性能的角度来看,哪个更好?选择/轮询还是异步I / O?我以前的印象是选择/轮询反复向内核询问数据,而异步I / O则依靠内核的通知来获得数据。但是,我注意到选择/轮询也依赖于内核通知。因此,我认为从性能的角度来看两者都是相同的。唯一的区别是选择/轮询块,而异步I / O没有。我是正确的还是缺少什么?解决方法
选择/轮询还依赖于内核通知来准备就绪的文件桌面。但是选择/轮询的缺点是它们会在调用后立即阻塞,因为Systemcall-Handler在内核空间中运行。
真正的异步I / O是通过LibAIO(在Linux上)和IOCP在Windows上实现的。据我所知,它们不阻止der User Space中的调用进程/线程,并且它们允许真正的重叠I / O。
这意味着异步非阻塞I / O(LibAIO&IOCP)更快,因为它不阻塞调用线程,并且它们允许真正的重叠I / O。选择/轮询也是异步的,但它们是异步阻塞。而且顺便说一下,选择和民意调查还遇到其他特定问题,因此它们无法很好地扩展。
希望我能帮助你。 (我也是这个新手:))
, 使用异步I / O,您必须连续循环并检查是否有需要定期读取的新数据。这使其占用大量CPU。选择/轮询只是阻塞,不占用CPU功率。它不会在内部循环。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。