gpt4 book ai didi

multithreading - 有关异步IO调用的更多详细信息

转载 作者:行者123 更新时间:2023-12-03 13:19:30 24 4
gpt4 key购买 nike

无论我以哪种方式考虑异步性,我仍然会提出某种并发性。

This guy here说异步性可以有两种形式:

  • 模拟异步性(让我这样称呼)-在其中生成线程以异步执行某些操作。对我来说,这是一个伪异步,它类似于并发。我在这里看不到任何真正的好处。
  • 硬件支持的异步-将请求仅转发到硬件(如硬盘或网卡)并控制
    执行立即返回给CPU。 IO操作准备就绪时,将通知CPU并执行回叫。
    如果您考虑单个IO请求,这似乎可以,但是如果我尝试将示例扩展为多个IO请求,那么我仍然只能达到并发性
    一致性已转发给硬件。
    这是两个异步IO调用的图表:
  • CPU ----- io async req 1 ----->硬件
  • CPU <------返回控件(无数据)-------硬件
  • CPU ----- io异步请求2 ------>硬件
  • CPU <------返回控件(无数据)-------硬件
  • CPU执行其他操作,而硬件执行两个IO任务
  • CPU <-------请求1的数据-------硬件
  • CPU执行回调
  • CPU执行其他操作
  • CPU <--------要求2的数据-------硬件
  • CPU执行回调

  • 如您所见,在第5行,硬件同时处理两个任务,因此并发已转移到硬件。因此,正如我所说,无论如何考虑异步性,我仍然会提出某种并发性,当然这次不是处理它的CPU,而是IO硬件。

    我错了吗 ?
    IO硬件是否接受并发?
    如果是,那么IO硬件提供的并发性是否比CPU更好?
    如果没有,那么硬件将同步执行多个IO操作,在这种情况下,我看不到异步与并发的好处。

    在此先感谢您的帮助。

    最佳答案

    异步IO主要是关于在IO持续时间内不必存在线程。想象一下,一台服务器正在等待1000000个TCP连接,以等待数据到达。每个连接只有一个线程,这会消耗大量内存。

    而是发出了一个无线程的异步IO,它只是一个小的数据结构。这是在OS上的注册,上面写着“如果有数据,请给我回电”。

    IO如何映射到硬件操作。某些硬件可能内置了并发功能。我的SSD肯定有它,因为它上面有多个独立的闪存芯片。其他硬件可能无法同时处理多个IO。较旧的磁盘没有做到这一点。简单的NIC没有并发性。在这里,驱动程序或操作系统将序列化请求。

    但这与启动IO无关。基于线程的和无线程的IO都是一样的。驱动程序和硬件通常无法区分(或无关紧要)。

    异步IO的线程数更少。这与完全不同地驱动硬件无关。

    关于multithreading - 有关异步IO调用的更多详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35110988/

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