Re: need feedback on singleton template
"Sohail Somani" <sohail@taggedtype.net> wrote in message
news:9LPGj.595$pb5.504@edtnps89...
On Thu, 27 Mar 2008 11:02:48 -0600, Chris Thomasson wrote:
Not going to work as-is because shared_ptr honors only basic
thread-safety. Here is an outline of an atomically thread-safe
singleton:
Here is one that works with boost threads (scroll to the bottom):
http://uint32t.blogspot.com/2007/12/you-lazy-bastard-part-1.html
[...]
I have a question wrt your 'static singleton<T>::call_me_once()' function:
____________________________________________________________
#include <boost/thread/once.hpp>
template<typename T>
struct singleton : private boost::noncopyable
{
public:
static
T & instance()
{
boost::call_once(call_me_once,once_);
return instance_helper();
}
private:
static boost::once_flag once_;
static void call_me_once()
{
instance_helper();
}
T & instance_helper()
{
static T t;
return t;
}
singleton();
~singleton();
};
template<typename T>
boost::once_flag singleton<T>::once_ = BOOST_ONCE_INIT;
____________________________________________________________
How can you call 'singleton<T>::instance_helper()' from 'static
singleton<T>::call_me_once()' when the static function has no access to the
'this' pointer?
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]