Monad Docs 中文版
by DocsZH
  • 介绍 Monad
    • 为什么选择区块链?
    • 为什么选择 Monad: 去中心化+性能
    • 面向用户的 Monad
    • 面向开发人员的 Monad
    • Devnet 开发者申请
  • 快速入门
    • 部署合约
      • 使用 Foundry 部署合约
      • 使用 Hardhat 部署合约
    • 验证合约
      • 验证 Foundry 合约
      • 验证 Hardhat 合约
  • 开发指南
    • EVM 资源
      • EVM Behavior
      • Solidity 资源
      • 其他编程语言
        • Vyper 语言
        • Yul 语言
        • Huff 语言
    • 使用 Scaffold-Eth-Monad 构建 dApp
  • Monad 架构
    • 相关概念
      • Asynchronous I/O
      • Pipelining
    • 共识机制
      • MonadBFT 共识机制
      • 延迟执行
      • 共享内存池
      • 传输成本和储备余额
    • 执行机制
      • 并行执行
      • MonadDb 数据库
    • Monad 的交易生命周期
    • 硬件要求
    • 其他详细信息
  • 参考资料
    • RPC 概述
    • RPC 故障代码
    • RPC API
  • Monad 官方链接
由 GitBook 提供支持
在本页
  1. Monad 架构
  2. 相关概念

Asynchronous I/O

上一页相关概念下一页Pipelining

最后更新于8个月前

Asynchronous I/O 是一种输入/输出处理方式,它允许中央处理器在通信进行时继续并发执行。

硬盘和网络比中央处理器慢几个数量级,与启动输入/输出操作并等待结果相比,中央处理器可以在需要数据时立即启动输入/输出操作,并继续执行其他不依赖于输入/输出操作结果的指令。

一些粗略的比较,仅供参考:

硬件
延迟时间
传输速度

中央处理器(三级缓存)

10 纳秒

400 GB/s

内存

100 纳秒

100 GB/s

硬盘(NVMe 固态硬盘)

400 纳秒

380 MB/s

网络

50-200 毫秒

1 Gb/s (125 MB/s)

(由 fio 报告的 2KB 随机读取的实际硬盘统计数据 - ~190k IOPS)

幸运的是,固态硬盘驱动器可以并发执行事务,因此 CPU 可以同时启动多个请求继续执行,然后同时接收多个事务的结果。

某些数据库(如:lmdb/mdbx)使用内存映射存储来读写磁盘,遗憾的是,内存映射存储是由内核(mmap)实现的,而不是异步的,因此在等待事务完成时会阻碍执行。

有关 Asynchronous I/O 的更多信息,请点击。

此处