This package provides a lock-free queue for C++. It only supports
a two-thread use case (one consuming, and one producing). The threads
can't switch roles, though you could use this queue completely from a
single thread if you wish (but that would sort of defeat the purpose!).
.
Features:
* Blazing fast
* Compatible with C++11 (supports moving objects instead of making
copies)
* Fully generic (templated container of any type) -- just like
std::queue, you never need to allocate memory for elements yourself
(which saves you the hassle of writing a lock-free memory manager
to hold the elements you're queueing)
* Allocates memory up front, in contiguous blocks
* Provides a try_enqueue method which is guaranteed never to allocate
memory (the queue starts with an initial capacity)
* Also provides an enqueue method which can dynamically grow the size
of the queue as needed
* Also provides try_emplace/emplace convenience methods
* Has a blocking version with wait_dequeue
* Completely "wait-free" (no compare-and-swap loop). Enqueue and
dequeue are always O(1) (not counting memory allocation)
* On x86, the memory barriers compile down to no-ops, meaning enqueue
and dequeue are just a simple series of loads and stores (and
branches)
Installed Size: 119.8 kB
Architectures: all