发布/订阅和智能指针

我想实现一个简单的发布/订阅模式,其中: html

单个发布者向其订阅者发布令牌(指向对象的指针)。 发布者和订阅者都是独立的线程。 我计划为每一个订阅者添加线程安全队列,以便Publisher能够在处理令牌时继续将订阅源分发给订阅者。 安全

正如您所看到的,这意味着全部订阅者实际上共享相同的指针(注意:订阅者不管如何都不能修改指向的对象,因此没有问题)。 一旦共享指针再也不被任何订阅者使用,若是指针在完成最后一个订阅者线程后能够自动删除,那将是很是好的。 spa

这是一个使用智能指针的好地方吗? 若是是这样,我应该使用哪些智能指针? 线程

我使用MSVC2008在Windows上开发,并使用Intel TBB,Boost和Qt。 设计


#1楼

若是我认为你的设计是可行的(它在零上下文中闻起来颇有趣,但多是正确的),boost :: shared_ptr可能就是这样。 指针

http://www.boost.org/doc/libs/1_38_0/libs/smart_ptr/smart_ptr.htm code

编辑:从:: weak_ptr切换到:: shared_ptr,由于我是个白痴...... htm


#2楼

您描述的是用于对象生存期控制的经典COM模式。 你须要一个智能指针来保持对象的引用计数器 - boost::shared_ptrboost::intrusive_ptr或ATL的CComPtr类。 我建议使用shared_ptr ,由于其余两个将须要你本身实现ref计数。 对象

相关文章
相关标签/搜索