首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是MsgPack‘区域’

什么是MsgPack‘区域’
EN

Stack Overflow用户
提问于 2012-10-17 02:37:30
回答 2查看 1.6K关注 0票数 7

我在MsgPack C headers中看到了对'zone‘的引用,但找不到关于它是什么或它是用来做什么的文档。那是什么?此外,C API的逐个函数文档在哪里?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-17 16:26:28

msgpack_zone是一个内部结构,用于解包时的内存管理和生命周期。我想说的是,如果您使用unpacking的标准高级接口或替代的streaming版本,您将永远不需要与它交互。

据我所知,没有详细的文档:相反,您应该参考测试套件,该套件提供了方便的代码示例来实现常见任务,例如,请参阅pack_unpack_c.ccstreaming_c.cc

票数 4
EN

Stack Overflow用户

发布于 2016-02-14 03:55:08

据我所知,它是一种仅限移动的类型,用于存储msgpack::object的实际数据。它很可能是一个实现细节,但实际上有时会泄漏到用户的代码中。例如,任何时候您想要捕获lambda中的msgpack::object,都必须同时捕获msgpack::zone对象。有时你不能使用移动捕获(例如,asio处理程序在某些情况下只接受可复制的处理程序,或者你的编译器不支持该功能)。要解决此问题,您可以:

代码语言:javascript
复制
msgpack::unpacked r;
while (pac_.next(&r)) {
   auto msg = result.get();
   io_->post([this, msg, z = std::shared_ptr<msgpack::zone>(r.zone().release())]() {
                // msg is valid here            
             }));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12921281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档