Struct clocksource::precise::AtomicInstant
source · pub struct AtomicInstant { /* private fields */ }
Expand description
An atomic precise measurement of a monotonically nodecreasing clock.
It is opaque and useful only with the duration types.
Internally, it reprsents the instant as a whole number of nanoseconds from
an arbitrary epoch using an AtomicU64
. This provides interior mutability
with atomic operations.
See the crate::precise::Instant
type for more details.
Implementations§
source§impl AtomicInstant
impl AtomicInstant
sourcepub fn new(value: Instant) -> Self
pub fn new(value: Instant) -> Self
Create a new AtomicInstant
representing the provided Instant
.
sourcepub fn load(&self, ordering: Ordering) -> Instant
pub fn load(&self, ordering: Ordering) -> Instant
See: core::sync::atomic::AtomicU64::load
for a description of the
memory orderings.
§Panics
Panics if ordering
is Release
or AcqRel
.
sourcepub fn store(&self, value: Instant, ordering: Ordering)
pub fn store(&self, value: Instant, ordering: Ordering)
Stores a new value for the instant.
See: core::sync::atomic::AtomicU64::store
for a description of the
memory orderings.
§Panics
Panics if ordering
is Acquire
or AcqRel
.
sourcepub fn swap(&self, value: Instant, ordering: Ordering) -> Instant
pub fn swap(&self, value: Instant, ordering: Ordering) -> Instant
Replaces the value of the instant and returns the previous value.
See: core::sync::atomic::AtomicU64::swap
for a description of the
memory orderings.
Note: This method is only available on platforms that support atomic
operations on u64
.
sourcepub fn compare_exchange(
&self,
current: Instant,
new: Instant,
success: Ordering,
failure: Ordering
) -> Result<Instant, Instant>
pub fn compare_exchange( &self, current: Instant, new: Instant, success: Ordering, failure: Ordering ) -> Result<Instant, Instant>
Stores a new value for the instant if the current instant is the same as
the current
instant.
See: core::sync::atomic::AtomicU64::compare_exchange
for a
description of the memory orderings.
Note: This method is only available on platforms that support atomic
operations on u64
.
sourcepub fn compare_exchange_weak(
&self,
current: Instant,
new: Instant,
success: Ordering,
failure: Ordering
) -> Result<Instant, Instant>
pub fn compare_exchange_weak( &self, current: Instant, new: Instant, success: Ordering, failure: Ordering ) -> Result<Instant, Instant>
Stores a new value for the instant if the current instant is the same as
the current
instant.
See: core::sync::atomic::AtomicU64::compare_exchange
for a
description of the memory orderings.
Note: This method is only available on platforms that support atomic
operations on u64
.
sourcepub fn fetch_add(&self, value: Duration, ordering: Ordering) -> Instant
pub fn fetch_add(&self, value: Duration, ordering: Ordering) -> Instant
Stores a new value for the instant if the current instant is the same as
the current
instant.
See: core::sync::atomic::AtomicU64::compare_exchange_weak
for a
description of the memory orderings.
Unlike AtomicDuration::compare_exchange
, this function is allowed to
spuriously fail. This allows for more efficient code on some platforms.
Note: This method is only available on platforms that support atomic
operations on u64
.
sourcepub fn fetch_max(&self, value: Instant, ordering: Ordering) -> Instant
pub fn fetch_max(&self, value: Instant, ordering: Ordering) -> Instant
Maximum with the current instant.
Finds the maximum of the current instant and the argument value
, and
sets the new instant to the result.
Returns the previous instant.
See: core::sync::atomic::AtomicU64::fetch_max
for a
description of the memory orderings.
Note: This method is only available on platforms that support atomic
operations on u64
.
sourcepub fn fetch_min(&self, value: Instant, ordering: Ordering) -> Instant
pub fn fetch_min(&self, value: Instant, ordering: Ordering) -> Instant
Minimum with the current instant.
Finds the minimum of the current instant and the argument val
, and
sets the new instant to the result.
Returns the previous instant.
See: core::sync::atomic::AtomicU64::fetch_min
for a
description of the memory orderings.
Note: This method is only available on platforms that support atomic
operations on u64
.
sourcepub fn fetch_sub(&self, value: Duration, ordering: Ordering) -> Instant
pub fn fetch_sub(&self, value: Duration, ordering: Ordering) -> Instant
Subtracts from the current instant, returning the previous instant.
This operation wraps around on overflow.
See: core::sync::atomic::AtomicU64::fetch_sub
for a
description of the memory orderings.
Note: This method is only available on platforms that support atomic
operations on u64
.