Skip to content

Commit

Permalink
Note that Acquire/Release is necessary in OnceBox
Browse files Browse the repository at this point in the history
  • Loading branch information
Kestrer committed Mar 18, 2022
1 parent 7d45ce0 commit 580fb72
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions src/race.rs
Expand Up @@ -10,13 +10,14 @@
//!
//! All types in this module use `Acquire` and `Release`
//! [atomic orderings](Ordering) for all their operations. While this is not
//! strictly necessary, it is useful for users as it allows them to be certain
//! that after `get` or `get_or_init` returns on one thread, any side-effects
//! caused by the setter thread prior to them calling `set` or `get_or_init`
//! will be made visible to that thread; without it, it's possible for it to
//! appear as if they haven't happened yet from the getter thread's perspective.
//! This is an acceptable tradeoff to make since `Acquire` and `Release` have
//! very little performance overhead on most architectures versus `Relaxed`.
//! strictly necessary for types other than `OnceBox`, it is useful for users as
//! it allows them to be certain that after `get` or `get_or_init` returns on
//! one thread, any side-effects caused by the setter thread prior to them
//! calling `set` or `get_or_init` will be made visible to that thread; without
//! it, it's possible for it to appear as if they haven't happened yet from the
//! getter thread's perspective. This is an acceptable tradeoff to make since
//! `Acquire` and `Release` have very little performance overhead on most
//! architectures versus `Relaxed`.

#[cfg(feature = "atomic-polyfill")]
use atomic_polyfill as atomic;
Expand Down

0 comments on commit 580fb72

Please sign in to comment.