select/poll 与异步 I/O 的性能

2024-01-19

从性能角度来看,哪一个更好?选择/轮询还是异步 I/O?我之前的印象是 select/poll 反复向内核请求数据,而异步 I/O 则依赖于内核通知数据可用性。但是,我注意到 select/poll 也依赖于内核通知。因此,我相信从性能的角度来看两者是相同的。唯一的区别是 select/poll 会阻塞,而异步 I/O 则不会。我是正确的还是我错过了什么?


select/poll 还依赖于内核通知来准备好 filedeskriptors。但 select/poll 的缺点是它们一被调用就会阻塞,因为系统调用处理程序在内核空间中运行。

真正的异步 I/O 是通过 LibAIO(在 Linux 上)和 IOCP(在 Windows 上)实现的。据我所知,它们不会阻塞用户空间中的调用进程/线程,并且它们允许真正的重叠 I/O。

这意味着异步非阻塞 I/O(LibAIO 和 IOCP)更快,因为它不会阻塞调用线程并且它们允许真正的重叠 I/O。 Select/poll也是异步的,但它们是异步阻塞。顺便说一句, select 和 poll 还存在其他特定问题,因此它们无法很好地扩展。

希望我能帮助你。 (我也是这方面的新手:))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

select/poll 与异步 I/O 的性能 的相关文章