Struct Backoff
pub struct Backoff { /* private fields */ }Expand description
An exponential backoff for spin loops.
This is a helper struct for spinning in a busy loop, with an exponentially increasing number of spins up to a maximum value.
Implementations§
§impl Backoff
impl Backoff
pub const DEFAULT_MAX_EXPONENT: u8 = 8u8
pub const DEFAULT_MAX_EXPONENT: u8 = 8u8
The default maximum exponent (2^8).
This is the maximum exponent returned by Backoff::new() and
Backoff::default(). To override the maximum exponent, use
Backoff::with_max_exponent().
pub const fn new() -> Backoff
pub const fn new() -> Backoff
Returns a new exponential backoff with the maximum exponent set to
Self::DEFAULT_MAX_EXPONENT.
pub fn with_max_exponent(max: u8) -> Backoff
pub fn with_max_exponent(max: u8) -> Backoff
Returns a new exponential backoff with the provided max exponent.
pub fn spin(&mut self)
pub fn spin(&mut self)
Backs off in a spin loop.
This should be used when an operation needs to be retried because
another thread or core made progress. Depending on the target
architecture, this will generally issue a sequence of yield or pause
instructions.
Each time this function is called, it will issue 2^exp [spin loop
hints], where exp is the current exponent value (starting at 0). If
exp is less than the configured maximum exponent, the exponent is
incremented once the spin is complete.