【问题标题】:On Async IO Completion异步 IO 完成时
【发布时间】:2017-02-24 14:28:25
【问题描述】:

我想知道在成功完成异步 IO(读取)请求后数据如何可用。我的意思是请求的数据是否存在于设备缓冲区或内存中(以某种方式缓存)?

例如,当我的异步回调被触发(由操作系统)通知我数据已准备好时,我是否会获得一个文件句柄(指向设备)来启动数据传输,或者,我已经有了回调中的数据(这意味着数据在内存中)。

【问题讨论】:

  • 我不清楚你在问什么。
  • @user3344003 我更新了一些问题。希望现在已经很清楚了。

标签: asynchronous io operating-system


【解决方案1】:

您尚未指定您使用的系统。在我使用过的所有支持异步 I/O 的系统中,都会调用一个系统服务并提供一个用户缓冲区来存储数据。

编程技巧是,当软件中断发生通知应用程序 I/O 完成时,应用程序必须将 I/O 请求与缓冲区匹配。

这样的系统服务总是包含一个参数来传递一些应用程序 ID,该应用程序 ID 又被传递给 I/O 完成时调用的软件中断处理程序。

所以通常您的数据会在缓冲区中等待您。

【讨论】:

    猜你喜欢
    • 2018-05-22
    • 2020-09-24
    • 2014-02-20
    • 2019-05-25
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多