Approach 1: Use a Synchronized Write Position
Learn how to use a synchronized write position approach with atomic size_t and fetch_add() to avoid multiple threads writing to the same index in parallel algorithms.
We'll cover the following
Overview
The first approach we might consider is to synchronize the write position by using an atomic size_t
and the fetch_add()
member function. Whenever a thread tries to write a new element, it fetches the current index and adds one atomically; thus, each value is written to a unique index.
In our code, we will split the algorithm into two functions: an inner function and an outer function. The atomic write index will be defined in the outer function, whereas the main part of the algorithm will be implemented in the inner function.
Inner function
The inner function requires an atomic size_t
that synchronizes the write positions. As the algorithm is recursive, it cannot store the atomic size_t
itself; it requires an outer function to invoke the algorithm:
Get hands-on with 1400+ tech skills courses.