Crate crossbeam[−][src]
Crossbeam supports concurrent programming, especially focusing on memory management, synchronization, and non-blocking data structures.
Crossbeam consists of several submodules:
-
atomic
for enhancingstd::sync
API.AtomicConsume
provides C/C++11-style "consume" atomic operations (re-exported from [crossbeam-utils
]).ArcCell
provides atomic storage and retrieval ofArc
. -
utils
andthread
for utilities, re-exported from [crossbeam-utils
]. The "scoped" thread API inthread
makes it possible to spawn threads that share stack data with their parents. Theutils::CachePadded
struct inserts padding to align data with the size of a cacheline. This crate also seeks to expand the standard library's few synchronization primitives (locks, barriers, etc) to include advanced/niche primitives, as well as userspace alternatives. -
epoch
for memory management, re-exported from [crossbeam-epoch
]. Because non-blocking data structures avoid global synchronization, it is not easy to tell when internal data can be safely freed. The crate provides generic, easy to use, and high-performance APIs for managing memory in these cases. We plan to support other memory management schemes, e.g. hazard pointers (HP) and quiescent state-based reclamation (QSBR). -
Concurrent data structures which are non-blocking and much superior to wrapping sequential ones with a
Mutex
. Crossbeam currently provides channels (re-exported from [crossbeam-channel
]), deques (re-exported from [crossbeam-deque
]), queues, and stacks. Ultimately the goal is to also include bags, sets and maps.
Modules
atomic |
Additional utilities for atomics. |
channel |
Multi-producer multi-consumer channels for message passing. |
deque |
A concurrent work-stealing deque. |
epoch |
Epoch-based memory reclamation. |
queue |
Concurrent queues. |
stack |
Concurrent stacks. |
thread | |
utils |
Utilities for concurrent programming. |
Macros
select |
Waits on a set of channel operations. |
Functions
scope |
Create a new |