Modules
Macros
Reuse the same test definitions for each implementation of the TQueueLike
trait
by calling this macro with a function to create a new instance of the queue.
Structs
TVar
is our handle to a variable, but reading and writing go through a transaction.
It also tracks which threads are waiting on it.
Enums
STM error extended with the ability to abort the transaction
with a dynamic error. It is separate so that we rest assured
that atomically
will not throw an error, that only
atomically_or_err
allows abortions.
Functions
Create a new transaction and run f
until it returns a successful result and
can be committed without running into version conflicts.
Like atomically
, but this version also takes an auxiliary transaction system
that gets committed or rolled back together with the STM transaction.
Create a new transaction and run f
until it returns a successful result and
can be committed without running into version conflicts, or until it returns
an Abort
in which case the contained error is returned.
Like atomically_or_err
, but this version also takes an auxiliary transaction system.
Retry unless a given condition has been met.
Run the first function; if it returns a Retry
,
run the second function; if that too returns Retry
then combine the values they have read, so that
the overall retry will react to any change.
Abandon the transaction and retry after some of the variables read have changed.