如何在 Boost.Asio 中使用零拷贝 sendmsg/Receive [关闭]

2024-03-18

我正在使用Boost.Asio, 我想通过使用零拷贝发送消息/接收来改进我的系统。 我可以在 Boost.Asio 中使用零拷贝 sendmsg/Receive 吗? 如果我可以使用它们,你能告诉我如何使用它们吗?


简而言之,只有当您的内存中表示与在线表示相同时才可以。

请参阅此处的答案,它们很好地描述了如何例如Cap'n Proto 实现了这一目标:

  • 谷物和 Boost Serialization 是否使用零拷贝? https://stackoverflow.com/questions/41801826/do-cereal-and-boost-serialization-use-zero-copy

还比较一下:

  • 使用 boost 的 TCP 零复制 https://stackoverflow.com/questions/25601331/tcp-zero-copy-using-boost/25602502#25602502

创建高级 C++ 数据结构的内存可映射表示,以便可以在线映射它们:

  • https://www.boost.org/doc/libs/1_72_0/doc/html/interprocess/driven_memory_segments.html#interprocess.management_memory_segments.making_ipc_easy.driven_memory_segments_intro https://www.boost.org/doc/libs/1_72_0/doc/html/interprocess/managed_memory_segments.html#interprocess.managed_memory_segments.making_ipc_easy.managed_memory_segments_intro,特别是关于basic_managed_heap_memory and basic_managed_external_buffer

  • 我在这个网站上有无数的示例,它们展示了如何使用此类托管内存段,但通常侧重于managed_mapped_file and managed_shared_memory它们具有完全相同的功能集,因此您可以以相同的方式将它们与以前的托管堆段一起使用:https://stackoverflow.com/search?q=user%3A85371+进程间+分配器 https://stackoverflow.com/search?q=user%3A85371+interprocess+allocator

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

如何在 Boost.Asio 中使用零拷贝 sendmsg/Receive [关闭] 的相关文章

  • Tensorflow 中的自定义资源

    由于某些原因 我需要为 Tensorflow 实现自定义资源 我试图从查找表实现中获得灵感 如果我理解得好的话 我需要实现3个TF操作 创建我的资源 资源的初始化 例如 在查找表的情况下填充哈希表 执行查找 查找 查询步骤 为了促进实施 我
  • 赋值运算符和复制构造函数有什么区别?

    我不明白C 中赋值构造函数和复制构造函数之间的区别 是这样的 class A public A cout lt lt A A lt lt endl The copy constructor A a b The assignment cons
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • 获取从属性构造函数内部应用到哪个属性的成员?

    我有一个自定义属性 在自定义属性的构造函数内 我想将属性的属性值设置为属性所应用到的属性的类型 是否有某种方式可以访问该属性所应用到的成员从我的属性类内部 可以从 NET 4 5 using CallerMemberName Somethi
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • gdb 在 docker 上立即退出“进程已完成,退出代码 1”或 lldb“数据包返回错误 8”。另外:如何在 docker 中允许进行 C++ 调试

    这花了我一整天的时间才找到 所以我将其发布以供将来参考 我正在 docker 镜像上开发 C 我正在使用克利翁 我的代码是在调试模式下编译的 并且在运行模式下运行良好 但是当尝试调试时 进程会立即退出 并显示非常丰富的信息 Process
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0
  • 通过不同 DLL 或 EXE 中的指针或引用访问 STL 对象时发生访问冲突

    我在使用旧版 VC6 时遇到以下问题 我只是无法切换到现代编译器 因为我正在处理遗留代码库 http support microsoft com kb 172396 http support microsoft com kb 172396
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu

随机推荐

  • 重载new和delete

    我尝试遵循这篇文章 http flipcode com archives How To Find Memory Leaks shtml http flipcode com archives How To Find Memory Leaks
  • 相对URL问题

    我将有多个文件夹 模块来访问常用文件 但访问它们对我来说似乎很重要 我确实通过这个链接来了解相对定位并设法解决了一些问题 但不是所有的 参考 php 中的相对 URL 路径 https stackoverflow com questions
  • IOS - 如果用户点击随机元素而不是背景,如何隐藏键盘?

    在我的应用程序中我有这样的东西 IBAction backgroundTouch id sender businessDescription resignFirstResponder self view endEditing YES 我不确
  • 如何使用 C# 读取 XML 元素的内容? [复制]

    这个问题在这里已经有答案了 可能的重复 解析 xml 文件的最佳实践 https stackoverflow com questions 55828 best practices to parse xml files 我希望能够在 XML
  • Spring WebFlux 创建无阻塞线程池

    我决定用 Java 重写我的 Web 应用程序 之前是用 Python 编写的 在我的应用程序中 我使用了无阻塞 I O 我有工作池 Celery Eventlet 线程 我在其中传递由数百个 API 调用组成的任务 现在我正在使用Spri
  • 如何使用 Process.Start 启动管道并重定向命令?

    我正在使用 System Diagnostics Process Start 在 Linux 操作系统上远程启动命令 到目前为止 我已经能够启动简单的命令 然后读取输出 例如我可以执行命令echo Hello World并阅读Hello W
  • 跨线程操作错误

    if listBox1 InvokeRequired listBox new StringBuilder this listBox1 Text 这是 c 中的代码 执行时会对 listBox1 产生无效的跨线程操作错误 listBox1 是
  • 透明背景上的 TKinter 按钮

    我试图了解如何将按钮应用到透明背景 同时保持其形状 当我生成下面的代码时 边框周围出现灰色背景 而且看起来也失去了形状 使用的颜色 侧边栏 2E3A4B 53 按钮 2C2F33 100 from tkinter import def bt
  • Laravel artisan cron 不工作

    我有一个页面在 beanstalked 中对电子邮件进行排队 该脚本按预期工作 当我有队列侦听器时 电子邮件会被触发 即 php artisan queue listen 但是当我删除侦听器并将其添加到 cron 作业时 usr bin p
  • 带有数字键的动态 json 对象

    我有一个 json 对象 在以下命令的帮助下将其转换为动态 C 对象this https stackoverflow com questions 3142495 deserialize json into c dynamic object
  • 如何获取 web.config appSettings 作为 ConfigurationSection 而不是 NameValueCollection

    ConfigurationManager AppSettings 属性 返回一个 NameValueCollection 对象 其中包含当前应用程序默认配置的 AppSettingsSection 对象的内容 但我需要 AppSetting
  • 如何检测 VPN 或代理连接? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想阻止所有使用 VPN 或代理服务器的连接 是否有办法检测是否正在使用 VPN 或代理连接 如果没有 我是否可以检查使用 VPN 或
  • iOS - 在关闭和滚动手势之间切换

    我正在尝试模仿 Line 通讯应用程序 日本事实上的通讯应用程序 中的一种行为 基本上 它们有一个模态视图控制器 内部有滚动视图 当滚动操作到达其内容的顶部时 视图控制器无缝切换到交互式解除动画 此外 当手势将视图返回到屏幕顶部时 控制权将
  • 最近的工具更新失败并出现依赖性错误后添加控制器

    由于安装 MVC3 的最新工具更新 通过 添加控制器 上下文菜单添加控制器通常会失败并出现以下错误 无法加载文件或程序集 Newtonsoft Json Version 3 5 0 0 Culture neutral PublicKeyTo
  • Ruby on Rails 表单:如何创建复选框表(或列表)

    在 Ruby on Rails 中创建一组相关复选框的最佳方法是什么 在 Turbogears 使用的 ToscaWidgets 库中 您可以执行以下操作 twf CheckBoxTable arbitrary numbers num co
  • 如何在 Python 中生成 HTML 单元测试输出?

    我正在寻找任何方法来在 HTML 摘要中显示 Python 单元测试的结果 对于 Java 和 Ruby 有这样的工具 尚未找到任何似乎可以为 Python 执行此操作的工具 那里有吗 JUnit HTML 输出 source ibm co
  • 使用 Nuxt/Vue 加载 D3

    我正在尝试在使用 Nuxt 构建的应用程序中实现 D3 我已成功将其导入到视图中
  • Rust:“无法移出‘self’,因为它是借用的”错误

    我正在尝试编写一个递归方法 将一个项目添加到树中并返回与该项目对应的树节点 enum BstNode Node int BstNode BstNode Leaf impl BstNode fn insert lt a gt a mut se
  • VB6杀死定时器

    我使用 VB6 进行编程 因为我们使用的是遗留代码和硬件 外部电子设备 我的程序是围绕计时器构建的 我将在操作系统编程中使用任务 计时器一直运行 直到其工作完成 设置一个标志并启动另一个计时器 我想要一个监督计时器来控制其他计时器当计时器没
  • 如何在 Boost.Asio 中使用零拷贝 sendmsg/Receive [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用Boost Asio 我想通过使用零拷贝发送消息 接收来改进我的系统 我可以在 Boost Asio 中使用零拷贝 send