Supply package:concurrent-supply
A fast unique identifier supply with local pooling and replay support.
One often has a desire to generate a bunch of integer identifiers
within a single process that are unique within that process. You could
use UUIDs, but they can be expensive to generate; you don't want to
have your threads contending for a single external counter if the
identifier is not going to be used outside the process.
concurrent-supply builds a tree-like structure which can be
split; you can make smaller unique supplies and then you allocate from
your supplies locally. Internally it pulls from a unique supply one
block at a time as you walk into parts of the tree that haven't been
explored.
A user managed globally unique variable supply.
A fast concurrent unique identifier supply with a pure API
A fast supply of concurrent unique identifiers suitable for use within
a single process. Once the initial
Supply has been initialized,
the remainder of the API is pure. See
Control.Concurrent.Supply
for details.
Grab a new supply. Any two supplies obtained with newSupply are
guaranteed to return disjoint sets of identifiers. Replaying the same
sequence of operations on the same Supply will yield the same results.
Split a supply into two supplies that will return disjoint identifiers
An unboxed version of splitSupply