gme*_*mon 3 io performance select asynchronous
从性能的角度来看,哪个更好?选择/轮询还是异步 I/O?我之前的印象是 select/poll 反复向内核询问数据,而异步 I/O 依赖于内核的数据可用性通知。但是,我注意到 select/poll 也依赖于内核通知。所以,我相信从性能的角度来看两者是一样的。唯一的区别是 select/poll 会阻塞,而异步 I/O 不会。我是正确的还是我错过了什么?
select/poll 还依赖于内核通知准备就绪的文件描述符。但是 select/poll 的缺点是它们一被调用就会阻塞,因为 Systemcall-Handler 运行在 Kernel-Space 中。
真正的异步 I/O 是通过 LibAIO(在 Linux 上)和 Windows 上的 IOCP 实现的。据我所知,它们不会阻塞用户空间中的调用进程/线程,并且它们允许真正的重叠 I/O。
这意味着异步非阻塞 I/O (LibAIO & IOCP) 更快,因为它不会阻塞调用线程并且它们允许真正的重叠 I/O。选择/轮询也是异步的,但它们是异步阻塞的。顺便说一句, select 和 poll 存在其他特定问题,因此它们无法很好地扩展。
希望我能帮助你。(我也是这方面的新手:))