|
dispenso 1.6.0
A library for task parallelism
|
#include <atomic>#include <cstddef>#include <cstdint>#include <cstring>#include <new>#include <type_traits>#include <utility>#include <dispenso/platform.h>#include <dispenso/tsan_annotations.h>Go to the source code of this file.
Classes | |
| class | dispenso::ChaseLevDeque< T, Capacity > |
| A lock-free SPMC bounded work-stealing deque. More... | |
A lock-free single-producer / multi-consumer (SPMC) work-stealing deque.
This is the bounded variant of the Chase-Lev deque (Chase & Lev, 2005), the standard data structure backing fork-join work-stealing schedulers (e.g., TBB, Cilk). The owning thread pushes and pops at the "bottom" end with no atomic CAS on the fast path; other threads steal from the "top" end via CAS. Owner pop is LIFO (newest-first) for cache locality; steal is FIFO (oldest-first) to take broad chunks of work.
Definition in file chase_lev_deque.h.