@hackage tbox0.1.0
Transactional variables and data structures with IO hooks
Categories
License
LicenseRef-LGPL
Maintainer
Peter Robinson <thaldyron@gmail.com>
Links
- Homepage
- Documentation
- No source repository
- Security
Versions
Installation
Dependencies (13)
- IfElse >=0.85 && <1
- array >=0.2 && <0.4
- base >=4 && <5
- binary >=0.5 && <0.6
- cautious-file >=0.1.5 && <0.2
- containers >=0.2.0.1 && <0.4 Show all…
Dependents (1)
@hackage/acme-everything
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
some type 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 TBox
that serializes its content to a file via Data.Binary.
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.
The TFile skip list instance tries to reconstruct its content from the
TFile-directory. See module Control.Concurrent.TFile.TSkipList for a
usage example.
Feedback is highly appreciated!