Transactional variables and data structures with IO hooks
|Latest on Hackage:||0.1.0|
This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.
This package provides STM data structures with IO hooks.
The basic building blocks are instances of class
TBox. Such an
instance is an STM variable that might contain a value of
a. In contrast to a plain 'TVar (Maybe a)', a
TBox has IO hooks that are executed transparently on writes and reads.
The IO hooks of the
AdvSTM monad extend the atomicity of STM transactions
to the on-commit IO actions, which makes it particularly suitable for
implementing a persistent and thread-safe storage.
See module Control.Concurrent.TFile for a (simple) instance of a
that serializes its content to a file via
New in this release is the implementation of a skip list in module
Control.Concurrent.TBox.TSkipList. A skip list is a probabilistic data
structure that provides expected run time of O(log n) for
dictionary operations (insert, lookup, filter, delete, update) similar to
a balanced tree.
The main advantage of a skip list is that it does not need rebalancing,
which could cause lots of contention among transactions.
TFile skip list instance tries to reconstruct its content from the
TFile-directory. See module Control.Concurrent.TFile.TSkipList for a
Feedback is highly appreciated!