选择/轮询与异步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功率。它不会在内部循环。