On Sunday 21 November 2010 02:16:27 Miles Bader wrote: > Patrick Horgan <phorgan1@xxxxxxxxx> writes: > > T& getaccess() > > { > > static T localT; > > return localT; > > } > ... > > 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? > > gcc, at least (well, versions above 4.0), takes care to make such local > static initializations thread-safe. modulo -fno-threadsafe-statics option ;)