2 stable releases
1.0.1 | Oct 16, 2021 |
---|---|
1.0.0 | Oct 15, 2021 |
#290 in Caching
29KB
446 lines
extra_waiters
This library provides synchronization primitives built on
top of parking_lot_core
. The various waiters here are a
mix between a Condvar
and a Mutex
, with the specific
details being particular to each waiter.
Note that the use of this library does not require a
Mutex
.
Examples of usage can be seen in the test cases written for each module, however the general pattern for each of the waiters is as follows:
AttentiveWaiter
This waiter provides functions to do the following:
-
Not wait for a notification, should one have occurred before the last time a notification was polled for.
-
Execute some code before the thread sleeps in a way that no thread could notify between the time the user code runs and the thread sleeps.
-
Perform the previous two bullet points using timeout functions which timeout at a certain
Instant
in time, or after a certainDuration
.
OnceWaiter
This waiter provides functions to do the following:
-
Ensure that an initialization function is only run once.
-
Ensure that an initialization function is only run on one thread at a time.
-
Run another thread's initialization function in case the currently running one panics.
-
Wait until the waiter is initialized without providing an initialization function.
-
Perform the previous bullet points using timeout functions which timeout at a certain
Instant
in time, or after a certainDuration
.
Spinlock
A simple spinlock built on atomic primitives.
This is not recommended to be used in most instances, however can be useful in certain cases.
Dependencies
~180–455KB