异步 I/O Linux

2023-12-09

需要异步 I/O 处理

计划在 Linux 上通过 aio* 调用使用异步 I/O

情况:

我已经使用 AF_INET 和 SOCK_STREAM 标志(TCP)打开了套接字 发送缓冲区有限制高水位线 想要异步写入该套接字,并且当发送缓冲区溢出时,想要断开套接字

所以,我有疑问:

  1. 当我在 TCP 套接字上对 aio_write 进行异步调用时,I/O 完成何时到达 - 缓冲区何时写出到套接字缓冲区或确认交付?我该如何管理这种行为?

  2. 如何最好地使用 lio_listio 技术来处理这个问题

问候, 安德鲁


你想避免在 Linux 上使用 AIO,至少现在是这样,从aio(7):

The current Linux POSIX AIO implementation is provided in userspace by glibc. This has a number of limitations, most notably that maintaining multiple threads to perform I/O operations is expensive and scales poorly. Work has been in progress for some time on a kernel state-machine-based implementation of asynchronous I/O (see io_submit(2), io_setup(2), io_cancel(2), io_destroy(2), io_getevents(2)), but this implementation hasn't yet matured to the point where the POSIX AIO implementation can be completely reimplemented using the kernel system calls.

相反,请查看非阻塞 IOselect(2)/poll(2)/epoll(7).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

异步 I/O Linux 的相关文章

随机推荐

  • Magento SOAP API - PHP 登录方法调用引发异常:“看起来我们没有 XML 文档”

    我在通过 PHP 的 SoapClient 连接到 Magento SOAP API 时遇到问题 我的开发服务器上有一个小型测试 PHP 文件设置 代码如下 PHP 文件与我的 magento 开发版本位于同一服务器上 当我通过命令行运行
  • Python 3 安装失败“注册的密钥集无效”

    我一直在尝试安装Python 3 但出现此错误 我在 Windows 8 64 位上运行它 我会继续努力 谢谢您的帮助 我没有找到任何有关此事的文章 所以我来到这里 我对所有应用程序都遇到了这个问题 这意味着当我尝试安装应用程序时 会弹出相
  • Coldfusion如何将pdf文件保存在数据库中并在浏览器中获取它

    插入到 MS SQL 2008 数据库
  • V8 执行解释器生成的字节代码还是涡轮风扇编译器生成的二进制代码? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我对 v8 的工作原理以及它如何执行 js 代码感到困惑 据我了解 v8 首先解析代码并创建 AST 然后将此 AST 引入解释器作为输入并生成字节代码 然后将此字节代码引入到
  • 如何连接 Jenkins 和 Gieta

    我有一个问题 我想在 Gitea Repo 和 Jenkins 之间建立 CI CD 管道 到目前为止 我使用 Jenkins 的 Gitea API 创建了一个 Webhook 不幸的是 当我尝试将测试包从 Gitea 发送到 Jenki
  • 按时区转换日期

    在上面的代码中 我想将服务器时区 GMT 02 00 的日期转换为我设备中的时区 GMT 03 00 但我总是有相同的服务器日期 我做错了什么 TimeZone timeZoneServer TimeZone getTimeZone tim
  • 在循环中保存 Matplotlib 绘图时出现内存溢出

    我正在使用 Matplotlib 使用迭代循环来绘制 soame 数据 当代码保存了大约 768 个绘图时 它会抛出以下异常 RuntimeError Could not allocate memory for image 我的电脑有大约
  • 对声明的 C++ 静态成员变量的“未定义引用”[重复]

    这个问题在这里已经有答案了 我已经开始使用 Java 进行编程 我刚刚达到了我认为在语言知识方面 良好 的水平 为了好玩 我决定开始使用 C 编程 我对这种语言相当陌生 但我学得很快 而且我认为它与 Java 相差不远 我创建了一个测试类
  • 控制台宽度存储在 Windows 注册表中的哪个位置?

    我的默认控制台宽度是 80 但是当我查看HKCU Console没有一个名称具有此值 唯一与 with 有关的是 WindowSize但它的值为 0x190050 即 dec 1638480 它的最后两位数字是否代表我正在搜索的值 在 HK
  • Python:同名函数和变量

    为什么我无法再次调用该函数 或者说 我怎样才能做到呢 假设我有这个功能 def a x y z if x return y else return z 我这样称呼它 print a 3 gt 2 4 5 I get 4 但想象一下我声明了一
  • 没有点击就触发onclick事件

    这是一个简单的骰子投掷事件 6 个骰子 由随机数生成 一切正常 我正在控制台中获取数据 但我希望它仅在单击按钮时触发 在此代码中 在没有我点击的情况下触发了 onclick 事件 在控制台中 我该如何解决这个问题 h1 Dice Proje
  • 犰狳线性系统求解器(带 openblas)

    我一直在测试各种开源代码来求解 C 中的线性方程组 到目前为止 我发现最快的是犰狳 也使用 OPENblas 包 为了解决密集线性 NxN 系统 其中 N 5000 在我的系统上大约需要 8 3 秒 这真的非常快 没有安装 openblas
  • 辅助功能 - Android Talkback 不会在 HTML 内容上触发焦点事件

    我正在尝试执行 接收onfocus在 Android 设备 Moto G Android 4 4 3 上选择 HTML 页面时使用 Talkback 的 HTML 事件input field 我在单个输入文本上创建了onfocusevent
  • 如何在 Visual Studio Code 中搜索文件?

    我习惯使用 Resharper 我可以在其中搜索文件 不是内容 而是文件名 这使得打开新文件变得更快 此功能是否在 Visual Studio Code 中实现 是否有快捷方式 Using 转到文件 这是在Go菜单或使用键盘快捷键 On W
  • JQuery:隐藏孩子,显示第n个孩子?

    这真的很奇怪而且应该很简单 我在 div 的标签内有一组图像 例如 div a href img src img1 jpg a a href img src img2 jpg a a href img src img3 jpg a div
  • PHP Duck 示例 - 首先 - 设计模式 - 第一章

    这是我向许多其他人提出的第一个问题 这里有人可能会说我疯了 因为我正在使用 PHP OO 关注问题标题中提到的书 在第一章中 作者介绍了一个名为 SimUDuck 的简单项目 尽管我已经用 Java 重现了相同的项目 但我想使用 PHP 重
  • 根据 R 中单行中的多个所需值匹配/查找行

    这肯定是重复的 但我找不到它 所以就这样吧 我有一个包含两列的数据框 一个包含一个组 另一个包含一个标准 一组可以包含许多不同的条件 但每行只能包含一个条件 我想识别包含三个特定条件的组 但会出现在不同的行上 在 我的例子中 我想识别包含条
  • 在 SwiftUI 中控制嵌套 UIView 的惯用方法是什么

    我想在 SwiftUI 视图层次结构中显示 WKWebView 并且我想使用 SwiftUI 中实现的按钮来控制 WKWebView 我可以通过创建 SwiftUI 来做到这一点WebView实现的类UIViewRepresentable和
  • Javascript注入到webview中

    我知道存在很多关于此的问题 但我不明白为什么我的以下代码不再起作用 这是我的代码 private void init webview setWebViewClient new FormWebViewClient webview postUr
  • 异步 I/O Linux

    需要异步 I O 处理 计划在 Linux 上通过 aio 调用使用异步 I O 情况 我已经使用 AF INET 和 SOCK STREAM 标志 TCP 打开了套接字 发送缓冲区有限制高水位线 想要异步写入该套接字 并且当发送缓冲区溢出