47c3dd535d
MozReview-Commit-ID: LQicTh0fmk0 --HG-- extra : rebase_source : 7a5ee9c3242fefa72e8d0372b8e9c03170c7df4b |
||
---|---|---|
.. | ||
scala-bench | ||
src | ||
.cargo-checksum.json | ||
.cargo-ok | ||
.travis.yml | ||
CHANGELOG.md | ||
Cargo.toml | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md |
README.md
Crossbeam: support for concurrent and parallel programming
This crate is an early work in progress. The focus for the moment is concurrency:
-
Non-blocking data structures. These data structures allow for high performance, highly-concurrent access, much superior to wrapping with a
Mutex
. Ultimately the goal is to include stacks, queues, deques, bags, sets and maps. -
Memory management. Because non-blocking data structures avoid global synchronization, it is not easy to tell when internal data can be safely freed. The
mem
module provides generic, easy to use, and high-performance APIs for managing memory in these cases. -
Synchronization. The standard library provides a few synchronization primitives (locks, semaphores, barriers, etc) but this crate seeks to expand that set to include more advanced/niche primitives, as well as userspace alternatives.
-
Scoped thread API. Finally, the crate provides a "scoped" thread API, making it possible to spawn threads that share stack data with their parents.
Usage
To use Crossbeam, add this to your Cargo.toml
:
[dependencies]
crossbeam = "0.2"
For examples of what Crossbeam is capable of, see the documentation.