
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...
for one of many articles on the subject. -- Nevin ":-)" Liber <mailto:nevin@eviloverlord.com> (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.