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 <
>
> http://software.intel.com/en-us/blogs/2007/11/30/volatile-almost-useless-for-multi-threaded-programming/
> >
> 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:
http://drdobbs.com/cpp/184403766

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.

Thank you,

Ben Robinson, Ph.D.