我正在尝试使用boost实现tcp零拷贝,但是我无法在google .My上找到任何问题,是否可以使用boost库执行零复制,如果可以,请给我发送一些示例或链接。
发布于 2014-09-01 09:15:39
你可以看Yandex的BoostCon演讲:基于Boost.Asio的网络服务器的优化
我的直觉告诉我,他们( Yandex的人)过度设计了这个(相当多.)。我想说的是,基本的解决方案在于使用预先分配的固定缓冲区(可能是每个线程),并使用Asio中的MutableBufferSequence概念将它们粘合在一起。
这种方法被称为散聚,仅在Asio文档中简要描述。这里可能有一个相关的例子:examples.buffers
正如@Nim已经评论过的那样,Asio默认在“零拷贝”模式下工作(因为它从来没有拥有缓冲区,也没有为调用方分配)。所以要让它发挥作用应该是相当简单的。当然,内核/libc函数是否以零拷贝的方式实现完全取决于OS/平台。
https://stackoverflow.com/questions/25601331
复制相似问题