In Scott Meyers' Effective C++ Item 4, Scott recommends
using something like:
T& getaccess()
{
static T localT;
return localT;
}
so that a static local is used instead of a static
global to access the global object and you can be sure
it's initialized before used.
What happens in the presence of threading? What if two
threads enter getaccess and exit in different orders?
I'm ignoring here any threading issues that a T itself
may have, and only thinking about the local static
initialization itself.
Would the local t get initialized more than once?
The language says that t would only be initialized the
first time the routine is called, so if the first one
sleeps and a second one gets in and out before the
first thread gets rescheduled, can it return a
reference to localT before localT is initialized?
Patrick