Subject: Re: [boost] Is there interest in an alternative to the Singleton anti-pattern?
From: Ben Robinson (icaretaker_at_[hidden])
Date: 2011-06-25 03:16:33
> > If you choose the default policy of single_threaded, there is no
> > thread safety, but there is also no overhead in using a mutex and using a
> > volatile pointer.
> Volatile in C++ doesn't really help with threading... Check out <
> for one of many articles on the subject.
> Nevin ":-)" Liber <mailto:nevin_at_[hidden]> (847) 691-1404
> Thank you for the feedback. That article and the accompanying discussion
is very interesting and informative. However, given the design of
Singularity, I feel I still must make "instance_ptr" volatile for thread
safety. If I do not, the compiler can store the pointer in a register, and
other threads of execution will not see changes to its value. The linked
article seems mostly concerned with fencing access to the variable, which I
am achieving by using a mutex object. I only need volatile to
prevent effectively reading a "cached" value for the pointer. I found the
following article by Andrei Alexandrescu especially interesting:
Also note, that the ThreadingModel for Singularity is policy based, so users
of the class are free to develop alternative thread-safe policies, using
whatever techniques are appropriate for their environment.
Ben Robinson, Ph.D.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk