Was ist das Double-Checked Locking Pattern in C++?

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.

com

Newsletter Anmeldung

Bleiben Sie informiert! Wir informieren Sie über alle neuen Beiträge (max. 1 Mail pro Woche – versprochen)