API overview

APISummary
@tasklet codeCreate an object that is a memoized version of () -> code but also acts like a Promise that is not settable.
Backoff(mindelay, maxdelay) -> backoffCreate a callable backoff where backoff() spin-wait some amount of times.
Guard(data)Guard mutable data. Use guarding to obtain exclusive access to data.
Once{T}(f = T)A concurrent object for lazily initializing an object of type T.
Promise{T}()Create a promise of type T; i.e., a memory location that holds a value of type T that can be set once and retrieved asynchronously.
ReadWriteGuard(data)Guard mutable data. Use guarding and guarding_read to obtain exclusive ("write") and shared ("read") access to data.
ReadWriteLock()Create a read-write lock.
ThreadLocalStorage{T}(factory)Create a thread-local storage of type T created by factory().
guarding(f!, guard)Apply f! to the data wrapped in guard while obtaining exclusive access.
guarding_read(f, guard)Apply f to the data wrapped in guard while obtaining shared access.
lock_read(rwlock)lock_read(rwlock) takes reader (shared) lock. It must be released with unlock_read.
race_put_with!(thunk, promise::Promise{T}) -> value::TFetch an existing value or set value = thunk(). The thunk is called at most once for each instance of promise.
spinloop()A hint to the compiler, runtime, and hardware that spinloop() is in the middle of a spin loop. Call this in a spin loop that requires some other worker threads to make forward progress in order for the current thread to make forward progress.
try_race_fetch(promiselike) -> Ok(value::T) or Err(NotSetError())Try to retrieve a value if it is already set. Return Ok(value) on success and Err(NotSetError()) on failure.
try_race_put!(promise::Promise{T}, value) -> Ok(value′::T) or Err(existing::T)Try to set a value in the promise.
try_race_put_with!(thunk, promise::Promise{T}) -> Ok(computed::T) or Err(existing::T)Fetch an existing value or set a computed value (computed = thunk()). The thunk is called at most once for each instance of promise.
trylock_read(rwlock) -> acquired::BoolTry to take reader lock. Return true on success.
unlock_read(rwlock)Unlock the reader lock taken with a preceding invocation of lock_read.