This question made me question a practice I had been following for years.
For thread-safe initialization of function-local static const objects I protect t
I am not standardista...
But for the use you mention, why not simply initialize them before any thread is created ? Many Singletons issues are caused because people use the idiomatic "single thread" lazy initialization while they could simply instantiate the value when the library is loaded (like a typical global).
The lazy fashion only makes sense if you use this value from another 'global'.
On the other hand, another method I've seen was to use some kind of coordination:
though I may not be describing it accurately.