Boost logo

Boost Users :

Subject: [Boost-users] [bind] Doubt regarding the use of shared_ptr with boost.bind
From: Shiou Ming Lee (shiouming.lee_at_[hidden])
Date: 2010-09-23 12:07:32


Hi, I have a doubt on using bind library. I pass the output of Bind to Asio
library, and at certain point of time another thread will ask Windows I/O
service to execute the function append():

m_ioService.post(m_strand.wrap(
                            boost::bind(&LogWriter::append,
(*logWritersItr), _logMessage, _logLevelString)
                         ));

The second param of Bind, (*logWritersItr), is a shared_ptr of LogWriter's
subclass. The signature of LogWriter::append() is as following:

virtual void append(const std::string& _logMessage, const std::string&
_logLevelString) = 0;

Base on document at http://www.boost.org/doc/libs/1_44_0/libs/bind/bind.html,
the way I use bind will duplicate a copy of that shared_ptr. Any idea when
will the duplicated shared_ptr become invalid so that the reference count
decreases by one?

Thanks,
Shiou Ming



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net