Posts

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

Barriers and Atomic Smart Pointers in C++20

/
In my last post, I introduced latches in C++20. A latch enables its threads to wait until a counter becomes…
TimelineCpp20CoreLanguage

Performance Comparison of Condition Variables and Atomics in C++20

/
After the introduction to std::atomic_flag in my last post, Synchronization with Atomics in C++20, I…
TimelineCpp20CoreLanguage

Synchronization with Atomics in C++20

/
Sender/receiver workflows are pretty common for threads. In such a workflow, the receiver is waiting…
TimelineCpp20CoreLanguage

Atomic References with C++20

/
Atomics receives a few essential extensions in C++20. Today, I start with the new data type std::atomic_ref.   The…
TimelineCpp20Concurrency

C++20: Concurrency

/
This post concludes my overview of C++20. Today's post is about the concurrency features in the next…
SingleThreadedAdditionEng

ABA – A is not the same as A

/
A common problem in concurrency is the so-called ABA problem. That means you read a value twice and each…
BlockingNonBlocking

Blocking and Non-Blocking Algorithms

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

Atomic Smart Pointers

/
C++20 will have atomic smart pointers. To be exact, we will get a std::atomic_shared_ptr and a std::atomic_weak_ptr.…
SingleThreadedAdditionEng

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…