gpt4 book ai didi

c++ - 异步 IO 中实际发生的情况

转载 作者:行者123 更新时间:2023-12-05 01:08:58 27 4
gpt4 key购买 nike

我一直在阅读为什么异步 IO 比同步 IO 更好,这是因为在异步 IO 中,您的程序可以继续运行,而在同步 IO 中,您会被阻塞,直到操作完成。
我不明白这句话,因为使用同步 IO(例如 write())内核将数据写入磁盘 - 它不会自行发生。内核确实需要 CPU 时间才能做到这一点。
所以在异步 IO 中,它也需要它,这可能会导致上下文从我的应用程序切换到内核。所以它并不是真正的阻塞,但确实需要 cpu 周期来运行这个操作。

  • 正确吗?
  • 这两者之间的区别是我们假设磁盘访问速度很慢,因此与等待数据写入磁盘的同步 IO 相比,在异步 IO 中等待数据写入磁盘的时间可以用来继续做应用处理,写入磁盘的内核部分很小?
  • 假设我有一个应用程序,它所做的只是获取信息并将其写入文件。使用异步 IO 代替同步 IO 有什么好处吗?

同步 IO 示例:

  • 写()

异步 ​​IO 示例:

  • io_uring(据我所知,拷贝也为零,所以这是一个好处)
  • spdk(应该是最好的,虽然我不明白怎么用)
  • aio

最佳答案

The kernel do need CPU time in order to do it.

Is that correct?.

差不多,是的。

Is the difference between those two that we assume disk access is slow ... in a-sync IO the time you wait for it to be written to disk can be used to continue doing application processing, and the kernel part of writing it to disk is small?

没错。

Let's say I have an application that all it does is get info and write it into files. Is there any benefit for using a-sync IO instead of sync IO?

取决于许多因素。应用程序如何“获取信息”?它是 CPU 密集型的吗?它使用与写入相同的 IO 吗?它是同时处理多个请求的服务吗?有多少同时连接?性能首先重要吗?在某些情况下:是的,使用异步 IO 可能有很大的好处。在其他一些情况下,您可以通过在单独的线程中使用同步 IO 获得大部分好处。而在其他情况下,单线程同步 IO 就足够了。

关于c++ - 异步 IO 中实际发生的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65570336/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com