On Dec 3, 1:47 am, Alan Johnson <aw...@yahoo.com> wrote:
jason.cipri...@gmail.com wrote: 4. Whether or not the construction
of a static variable is threadsafe depends mostly on the
implementation (the standard says nothing about it). gcc has an
option =fno-threadsafe-statics to turn off the extra code emitted
to make local statics thread safe. I guess one could extrapolate
that by default local statics are thread safe in gcc (though I have
no idea if this is actually true).
I think you may be talking about function-local statics. C++
guarantees that global-scoped statics are initialized before main().
This means that, as long as the singleton class initialization
doesn't depend on objects being initialized in other translation
units (and the other way around), it *will* be properly initialized
before main (), and therefore it will be properly initialized before
any threads access it (assuming all threads are created after main
starts, not during static initialization). So no locking would be
needed (on any platforms); getInstance() would always return a
completely initialized object -- here is the method I finally settled
on: