Blocking and Non-Blocking Algorithms

Blocking, non-blocking, lock-free, and wait-free. Each of these terms describes a key characteristic…

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…

Ongoing Optimization: Relaxed Semantics with CppMem

With the relaxed semantics, we have no synchronizations and ordering constraints on atomic operations. Relaxed…

Relaxed Semantics

The relaxed semantics is the end of the scale. The relaxed semantic is the weakest of all memory models…

Fences are Memory Barriers

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

Synchronization and Ordering Constraints

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