mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-07 01:05:39 +03:00
Rollup merge of #136300 - RalfJung:compare-and-swap, r=joboet
atomic: extend compare_and_swap migration docs Fixes https://github.com/rust-lang/rust/issues/80486
This commit is contained in:
@@ -716,6 +716,12 @@ pub fn swap(&self, val: bool, order: Ordering) -> bool {
|
||||
/// AcqRel | AcqRel | Acquire
|
||||
/// SeqCst | SeqCst | SeqCst
|
||||
///
|
||||
/// `compare_and_swap` and `compare_exchange` also differ in their return type. You can use
|
||||
/// `compare_exchange(...).unwrap_or_else(|x| x)` to recover the behavior of `compare_and_swap`,
|
||||
/// but in most cases it is more idiomatic to check whether the return value is `Ok` or `Err`
|
||||
/// rather than to infer success vs failure based on the value that was read.
|
||||
///
|
||||
/// During migration, consider whether it makes sense to use `compare_exchange_weak` instead.
|
||||
/// `compare_exchange_weak` is allowed to fail spuriously even when the comparison succeeds,
|
||||
/// which allows the compiler to generate better assembly code when the compare and swap
|
||||
/// is used in a loop.
|
||||
@@ -1651,6 +1657,12 @@ pub fn swap(&self, ptr: *mut T, order: Ordering) -> *mut T {
|
||||
/// AcqRel | AcqRel | Acquire
|
||||
/// SeqCst | SeqCst | SeqCst
|
||||
///
|
||||
/// `compare_and_swap` and `compare_exchange` also differ in their return type. You can use
|
||||
/// `compare_exchange(...).unwrap_or_else(|x| x)` to recover the behavior of `compare_and_swap`,
|
||||
/// but in most cases it is more idiomatic to check whether the return value is `Ok` or `Err`
|
||||
/// rather than to infer success vs failure based on the value that was read.
|
||||
///
|
||||
/// During migration, consider whether it makes sense to use `compare_exchange_weak` instead.
|
||||
/// `compare_exchange_weak` is allowed to fail spuriously even when the comparison succeeds,
|
||||
/// which allows the compiler to generate better assembly code when the compare and swap
|
||||
/// is used in a loop.
|
||||
@@ -2771,6 +2783,12 @@ pub fn swap(&self, val: $int_type, order: Ordering) -> $int_type {
|
||||
/// AcqRel | AcqRel | Acquire
|
||||
/// SeqCst | SeqCst | SeqCst
|
||||
///
|
||||
/// `compare_and_swap` and `compare_exchange` also differ in their return type. You can use
|
||||
/// `compare_exchange(...).unwrap_or_else(|x| x)` to recover the behavior of `compare_and_swap`,
|
||||
/// but in most cases it is more idiomatic to check whether the return value is `Ok` or `Err`
|
||||
/// rather than to infer success vs failure based on the value that was read.
|
||||
///
|
||||
/// During migration, consider whether it makes sense to use `compare_exchange_weak` instead.
|
||||
/// `compare_exchange_weak` is allowed to fail spuriously even when the comparison succeeds,
|
||||
/// which allows the compiler to generate better assembly code when the compare and swap
|
||||
/// is used in a loop.
|
||||
|
||||
Reference in New Issue
Block a user