I’ve been looking all around SO and MSDN for an answer to this question, but cannot seem to find a clear and final answer…
I know that it’s in the C++11 standard and that current GCC version behave this way, but does VC2010 currently guarantees thread-safety of a local static variable initialization?
i.e.: Is this thread-safe with VC2010?
static S& getInstance()
{
static S instance;
return instance;
}
…And if not, what is the current best practice to get a thread-safe singleton implementation in C++ with VC2010?
EDIT: As pointed out by Chris Betti’s answer, VC2010 doesn’t implement thread-safeness of local static variable init.
From Visual Studio 2010’s documentation on Static:
The second part of your question has some good existing answers.
Updated Nov 22, 2015:
Others have verified, specifically, that static initialization is not thread safe either (see comment and other answer).
User squelart on VS2015: