访问boost调度程序中的shared_ptr

时间:2014-01-16 18:48:33

标签: boost boost-asio shared-ptr boost-thread dispatch

我使用boost调度程序(io_service)异步执行“methodB”。在这个方法中,我想保留一个指向B类实例的指针,所以我使用了shared_ptr。但是在下面的例子中,我想知道是否在“methodA”的范围之后,指针仍然可以访问“methodB”或者指针refcounter将等于零。

void ClassA::methodA(){
  shared_ptr<ClassB> pointer(new ClassB);
  m_dispatcher.post(boost::bind(&ClassA::methodB, this, pointer); // boost io_service
}

void ClassA::methodB(shared_ptr<ClassB> pointer){
  ClassB *p = pointer.get(); // access to pointer ???
}

非常感谢你。

1 个答案:

答案 0 :(得分:1)

以这种方式使用boost::bind将复制确保shared_ptr<ClassB>保留在范围内的参数。你正在做的事情非常好。