AtomicBackoff#

Fully qualified name: omni::graph::exec::unstable::AtomicBackoff

class AtomicBackoff#

Exponential backoff pattern for waiting with a cap number of pauses.

This class implements exponential backoff, where each call to pause will cause busy waiting and increment the number of iterations for next pause call. All of this is cap with a maximum limit of pause calls after which waiting is considered long and switches to yield.

This class is useful when we expect short waits and would like to prevent yielding the compute resources for this short period of time.

This object is not ABI-safe.

Thread Safety

Methods are not thread safe unless otherwise noted.

Public Functions

inline constexpr AtomicBackoff() noexcept#

Default constructor.

AtomicBackoff(const AtomicBackoff&) = delete#
AtomicBackoff &operator=(const AtomicBackoff&) = delete#
inline void pause() noexcept#

Pause execution for a short period of time.

Use exponential backoff pattern and a upper wait cap to select between busy waiting and yielding.

Thread Safety

This method is not thread safe.

inline void reset() noexcept#

Clear wait counter.

Thread Safety

This method is not thread safe.