tbox: Transactional variables and data structures with IO hooks

[ concurrency, data, library ] [ Propose Tags ]

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!


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.0.0, 0.1.0
Dependencies array (>=0.2 && <0.4), base (>=4 && <5), binary (>=0.5 && <0.6), cautious-file (>=0.1.5 && <0.2), containers (>= && <0.4), directory (>= && <1.1), filepath (>=1.1 && <1.2), IfElse (>=0.85 && <1), monad-loops (>= && <, mtl (>= && <1.2), random (>= && <1.1), safe-failure (>=0.4.0 && <0.5), stm-io-hooks (>=0.6.0 && <0.7) [details]
License LicenseRef-LGPL
Author Peter Robinson 2009, 2010
Maintainer Peter Robinson <thaldyron@gmail.com>
Category Data, Concurrency
Home page http://darcs.monoid.at/tbox
Uploaded by PeterRobinson at 2010-04-02T19:43:24Z
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 1921 total (5 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]