Posts
Dealing with Mutation: Guarded Suspension
/
0 Comments
Guarded Suspension applies a unique strategy to deal with mutation. It signals when it is done with…
Dealing with Mutation: Locking
Locking is a classical way to protect a shared, mutable state. Today, I will present the two variants,…
Dining Philosophers Problem III
This post ends the mini-series about the dining philosophers problem by Andre Adrian. Today, he applies…
Dining Philosophers Problem II
In the last post "Dining Philosophers Problem I", Andre Adrian started his analysis of the classical…
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…
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…
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…
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: Locks and Volatile with CppMem
The easiest way to solve the undefined behaviour in the post Ongoing Optimization: Unsynchronized access…
Prefer Locks to Mutexes
If the previous post showed something, it's that you should use mutexes with great care. That's why you…