如何在 Boost.Asio 中使用 Zero-copy sendmsg/receive



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

简短的回答,只有当您的内存表示形式与在线表示形式相同时,您才能这样做。

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

  • 谷物和提升序列化是否使用零拷贝?

还要比较:

  • 使用加速的 TCP 零拷贝

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

  • 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_memorybasic_managed_external_buffer

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

最新更新