Double-Checked Locking Pattern

This lesson gives an overview of the double-checked locking pattern for the problem of the thread-safe initialization of a singleton in C++.

The double-checked locking pattern is the classic way to initialize a singleton in a thread-safe way. What sounds like established best practice - or a pattern - is more a kind of an anti-pattern. It assumes guarantees in the classical implementation, which aren’t given by the Java, C#, or C++ memory model. The wrong assumption is that the creation of a singleton is an atomic operation; therefore, a solution that seems to be thread-safe is not thread-safe.

What is the double-checked locking pattern? The first idea for implementing a thread-safe singleton is to protect the initialization of the singleton with a lock.

Create a free account to view this lesson.

By signing up, you agree to Educative's Terms of Service and Privacy Policy