Singleton* Singleton::instance() { Lock lock; // acquire lock (params omitted for simplicity) if (pInstance == 0) { pInstance = new Singleton; } return pInstance; } // release lock (via Lock destructor)
Example 2: Acquiring a lock before testing pInstance.