
I've the following: <1> a single instance of io_service object with a program life-time and several threads calling it's run() method. io_service::work is given to it so that it never terminates (unless we stop it). <2> class A which has boost::signals2::signal connecting functions for callback. * async operations (eg., async_read_until, async_write etc) <3> class B which is derived from std::shared_from_this ; * has a composition of class A as std::unique_ptr which is instantiated in B's constructor ; <c> has functions/listeners which are registered with signals of class A (eg., signals2::connection connectionObj = uniqPtrA->someSig.connect([=]{shared_from_this_ptrB->listenerFuncOfB();}); <4> Another thread outside the thread-pool of <1> above which instantiates (and manages) class B: auto ptrB = std::make_shared(); //and further operations. The problem is when I need to destroy ptrB I can't. For instance, i call some method of class B on ptrB to clear all connections it has with class A and allow ptrB to go out of scope, but class B destructor is never called: {//local scope auto ptrB = std::make_shared(); ptrB->connectListenersToA(); /* eg auto self = shared_from_this(); connectionObj = uniqPtrA->someSig.connect([=]{self ->listenerFuncOfB();}); referring to <3> above */ //... do some operations ptrB->disconnectListenersWithA(); //eg connectionObj.disconnect(); referring to <3> above }//Scope ends I want ptrB to destroy the underlying pointer. The ptrB destructor is never called because signals2::connection::disconnect does not seem to wipe out the given slot so the shared_ptr reference of B remains with the signal in class A as anonymous functor (due to lambda in <3> above) containing it does not get destroyed. How do I achieve this? -- View this message in context: http://boost.2283326.n4.nabble.com/Mixing-signals2-and-asio-mechanism-failin... Sent from the Boost - Users mailing list archive at Nabble.com.