Posts

DealingWithMutation

Dealing with Mutation: Guarded Suspension

/
Guarded Suspension applies a unique strategy to deal with mutation. It signals when it is done with…
DealingWithMutation

Dealing with Mutation: Locking

/
Locking is a classical way to protect a shared, mutable state. Today, I will present the two variants,…
An illustration of the dining philosophers problem

Dining Philosophers Problem III

/
This post ends the mini-series about the dining philosophers problem by Andre Adrian. Today, he applies…
An illustration of the dining philosophers problem

Dining Philosophers Problem II

/
In the last post "Dining Philosophers Problem I", Andre Adrian started his analysis of the classical…
retriever

C++ Core Guidelines: Sharing Data between Threads

/
If you want to have fun with threads, you should share mutable data between them. To get no data race…
timeline11 14

C++ Core Guidelines: Rules for Concurrency and Parallelism

/
C++11 is the first C++ standard that deals with concurrency. The basic building block for concurrency…
CalculateWithLoop

Single Threaded: Summation of a Vector

/
What is the fastest way to add the elements of a std::vector? This a question that I will pursue in the…
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…
sukzessiveOptimierungLocksEng

Ongoing Optimization: Locks and Volatile with CppMem

/
The easiest way to solve the undefined behaviour in the post Ongoing Optimization: Unsynchronized access…
deadlockResolved

Prefer Locks to Mutexes

/
If the previous post showed something, it's that you should use mutexes with great care. That's why you…