Singleton* Singleton::instance() { if (pInstance == 0) { Lock lock; if (pInstance == 0) { pInstance = // Step 3 operator new(sizeof(Singleton)); // Step 1 new (pInstance) Singleton; // Step 2 } } return pInstance; }
Example 4: pInstance's initialization line expanded into three constituent tasks.