分享

C 异步调用时boost的 share

 quasiceo 2012-12-05

C++异步调用时boost的 share_from_this 真是好用  

2012-06-08 15:30:25|  分类: 程序设计 |字号 订阅

        把类的成员函数作为异步操作的回调时把 shared_from_this()返回的智能指针传过去,而不是传this指针给 boost::bind 操作。然后对象使用 share_prt 来管理。注意的是类继承自enable_shared_from_this后,要使用shared_from_this()的话,对象一定要经过 share_prt 的初始化才能使用。像下面这样写,如果你使用了enable_shared_from_this.之后就不要再用其他形式来创建对象了。 boost::shared_ptr<CharSession>  new_session(new CharSession(....))
shared_from_this 也是不能在构造函数里面使用的,应该是在 “boost::shared_ptr<CharSession>  new_session(new CharSession(....))"  这一句之后使用,可以写在成员函数里面的啦。

         这样的boost::shared_ptr<CharSession>  可以放到 stl容易里面去管理,使用起来很方便。相比较直接把对象指针放到容器,需要删除对象时,不再需要小心翼翼的delete。之前遇到的问题就是需要 delete 容器里面的对象指针时的时候,有些捆绑的异步函数还没有返回,如果提前delete了对象,等会异步操作返回的时候就出错了,使用了 share_from_this()  之后代码应该方便好多了。


enable_shared_from_this.hpp  

网络库asio  的“example” 里面 的“chat server” 例子有怎么使用例子。可以去参考一下。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多