我正在使用 Boost.Asio,我想通过使用零拷贝 sendmsg/Receive 来改进我的系统。我可以在 Boost.Asio 中使用零拷贝 sendmsg/Receive 吗?如果我可以使用它们,你能告诉我如何使用它们吗?
问问题
508 次
1 回答
3
简短的回答,只有当您的内存表示与在线表示相同时,您才能这样做。
请参阅此处的答案,它很好地描述了 Cap'n Proto 是如何实现这一点的:
还比较:
以及创建高级 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_memory
和basic_managed_external_buffer
我在此站点上有大量示例,它们展示了如何使用此类托管内存段,但通常专注于
managed_mapped_file
并且managed_shared_memory
具有完全相同的功能集,因此您可以以相同的方式将这些与以前的托管堆段一起使用:https:/ /stackoverflow.com/search?q=user%3A85371+interprocess+allocator
于 2020-02-17T00:06:37.650 回答