A collection of utilities for writing concurrent code.
Associate a delay with a value
An unbounded blocking queue of delayed values. When a value is pushed onto the queue, a delay is included. The value will only be able to be popped off once the specified delay has expired. The head of the queue is the value whose delay is expired and furthest in the past.
A queue in which values are contained by a linked list.
A thread pool that can schedule tasks to run after a given delay, or to execute periodically. Delayed tasks do not run before their associated delays, but besides that, there are no real-time guarantees about exactly when the task will run.
A value that should not be used until the delay has expired.
A value that can run a unit of work.