The usual pattern for a singleton class is something like
static Foo &getInst() { static Foo *inst = NULL; if(inst == NULL) inst = new Foo(...);
TTBOMK, the only guaranteed thread-safe way to do this without locking would be to initialize all your singletons before you ever start a thread.