Posts

BlockingNonBlocking

Blocking and Non-Blocking Algorithms

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

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…
undefinedEng

Ongoing Optimization: A Data Race with CppMem

/
But we can improve and further improve the acquire-release semantics of the last post. Why should x be…
sukzessiveOptimierungSequenzielleKonsistenzEng

Ongoing Optimization: Acquire-Release Semantics with CppMem

/
With the acquire-release semantics, we break the sequential consistency. In the acquire-release semantics,…
acquireOperation

Acquire-Release Fences

/
Acquire and release fences guarantee similar synchronization and ordering constraints as atomics with…
FullFence

Fences are Memory Barriers

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

Acquire-Release Semantics – The Typical Misunderstanding

/
A release operation synchronizes-with an acquire operation on the same atomic variable. So we can easily…
acquireReleaseConsume

memory_order_consume

/
std::memory_order_consume is the most legendary of the six memory models. That's for two reasons. On…
criticalRegion

Acquire-Release Semantic

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

Synchronization and Ordering Constraints

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