My Conclusion: Summation of a Vector in three Variants

After I've calculated in three different ways the sum of a std::vector I want to draw my conclusions.   The…

Multithreaded: Summation with Minimal Synchronization

Until now, I've used two strategies to summate a std::vector. First, I did the whole math in one thread…

Thread-Safe Initialization of a Singleton

There are a lot of issues with the singleton pattern. I'm aware of that. But the singleton pattern is…

Ongoing Optimization: Sequential Consistency with CppMem

With atomic data types, you can tailor your program to your needs and optimize it. But now we are in…

Fences are Memory Barriers

The key idea of a std::atomic_thread_fence is to establish synchronization and ordering constraints between…

Acquire-Release Semantic

With the acquire-release semantics, the memory model gets very thrilling. Because now, we do not have…

Sequential Consistency applied

I have introduced In the post Sequential Consistency the default memory model. This model, in which all…

Synchronization and Ordering Constraints

In this post, our tour through the c++ memory model goes one step deeper. Until now, the posts were only…
fetch mult


In addition to booleans, there is atomics for pointers, integrals, and user-defined types. The rules…

Sequential Consistency

The atomics are the base of the C++ memory model. Per default, sequential consistency is applied. The…