|
Boost : |
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.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk