首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么AIO比select和多线程IO处理更好?

为什么AIO比select和多线程IO处理更好?
EN

Stack Overflow用户
提问于 2012-01-04 17:43:12
回答 4查看 2.2K关注 0票数 5

我读到过select和多线程编程是低性能的IO模型,例如这个IBM developerworks article on high perfomance IO

我不明白同步/同步:阻塞/非阻塞是如何提高性能的。为什么AIO是这里的最佳选择?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-04 17:53:51

异步和/或非阻塞不会为系统中的单个IO操作提供任何固有的速度提升,如果从磁盘读取数据需要x毫秒,那么就需要x毫秒。

通过允许IO操作与执行的主线程有效地分离,这些方法的优势在多线程环境中是真实的(或者即使IO延迟也可以继续操作的环境)。由此感受到的性能提升是由于用于等待IO返回或解除阻塞的资源数量减少了。

在这个thread中可以很好地比较异步和非阻塞。

票数 4
EN

Stack Overflow用户

发布于 2012-01-04 18:48:08

如果进程可以做其他事情,那么在等待单个IO完成的同时阻塞整个进程是没有效率的。AIO是允许进程在系统为其执行IO时执行其他操作的一种方法;多线程是另一种方法。使用多线程和使用AIO之间的差异很大程度上取决于设计;例如,在典型的服务器中,使用多线程要容易得多,并且在性能上应该没有太大差异。对于其他应用程序,AIO可能更简单和/或提供更高的性能。这是另一个需要考虑的工具,但它并不适用于所有地方。

票数 1
EN

Stack Overflow用户

发布于 2012-01-04 17:46:23

在线程化环境中,单个线程阻塞的时间过长是不好的,因为这会阻止其他线程进行工作。为了防止这种情况,使用了异步非阻塞IO。一个通用库是Boost.Asio

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8724755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档