Es ist ein Optimierungsmuster zur Initialisierung eines Objekts (oft eines Singletons), das sicherstellt, dass ein Lock nur bei der ersten Instanzierung verwendet wird:
MySingleton* MySingleton::getInstance() {
if (!instance) {
std::lock_guard<std::mutex> lock(mutex);
if (!instance) {
instance = new MySingleton();
}
}
return instance;
}
Beachte, dass korrektes Funktionieren C++11 oder neuer erfordert, da ältere Standards keine garantierte Thread-Sicherheit für diese Technik bieten.