2014-01-16 7 views
0

부스트 디스 패 처 (io_service)를 사용하여 "methodB"를 비동기 적으로 실행합니다. 이 방법으로 클래스 B의 인스턴스에 대한 포인터를 유지하고 싶습니다. 따라서 shared_ptr을 사용합니다. 그러나 아래 예제에서 "methodA"의 범위 이후에 포인터가 여전히 "methodB"에 액세스 할 수 있는지 또는 포인터 refcounter가 0과 같을 지 궁금합니다.부스트 디스패처에서 shared_ptr에 대한 액세스

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

이 방식으로 boost::bind을 사용하면 shared_ptr<ClassB>이 범위에 있음을 보장하는 인수를 복사합니다. 니가하고있는 일은 완벽하다.