bors[bot] and tsnoam Merge #263
263: crossbeam-epoch: Add Shared::deref_mut() r=Vtec234 a=tsnoam

It is possible that the user would like to have one thread to be able to
update the value of the object pointed by Atomic. For that, they will
need to have a mutable refernce towards that object.

This is an unsafe function because there is no guarantee that there are
more threads attempting to read/write from/to the actual object in the
same time.
In order to proivde safety the user must be able to know that there are
no concurrent accesses towards the object itself and/or use
crossbeam_utils::atomic::AtomicCell to provide the needed guarantees.

Co-authored-by: Noam Meltzer <noam@cynerio.co>
Latest commit 2b0661f Dec 23, 2018
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
benches Fix benchmark suite Nov 6, 2018
examples Rustfmt Nov 5, 2018
src Improve documentation, per CR on PR #263 Dec 15, 2018
CHANGELOG.md Prepare v0.5.1 Dec 16, 2018
Cargo.toml Prepare v0.5.1 Dec 16, 2018
LICENSE-APACHE Merge remaining subcrates Nov 5, 2018
LICENSE-MIT Update licensing Nov 13, 2018
README.md Prepare v0.5.1 Dec 16, 2018

README.md

Crossbeam Epoch

Build Status License Cargo Documentation Rust 1.26+

This crate provides epoch-based garbage collection for building concurrent data structures.

When a thread removes an object from a concurrent data structure, other threads may be still using pointers to it at the same time, so it cannot be destroyed immediately. Epoch-based GC is an efficient mechanism for deferring destruction of shared objects until no pointers to them can exist.

Usage

Add this to your Cargo.toml:

[dependencies]
crossbeam-epoch = "0.7"

Next, add this to your crate:

extern crate crossbeam_epoch as epoch;

Compatibility

The minimum supported Rust version is 1.26.

This crate can be used in no_std environments, but only on nightly Rust.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.