stm-io-hooks: Launch your IO-actions from within the STM monad

[ bsd3, concurrency, library ] [ Propose Tags ]
Versions [RSS] 0.0.1, 0.1.0, 0.2.0, 0.2.1, 0.3.0, 0.4.2, 0.5.4, 0.6.0, 0.7.0, 0.7.1, 0.7.2, 0.7.3, 0.7.5, 1.0.0, 1.0.1, 1.1.0, 1.1.1, 1.1.2
Dependencies array (>=0.5.3.0 && <1), base (>=4.7 && <5), mtl (>=2.2.2 && <3), stm (>=2.2 && <3) [details]
License BSD-3-Clause
Copyright Peter Robinson 2009-2019, Chris Kuklewicz 2006
Author Peter Robinson
Maintainer thaldyron@gmail.com
Category Concurrency
Uploaded by PeterRobinson at 2019-10-27T16:15:02Z
Distributions NixOS:1.1.2
Reverse Dependencies 3 direct, 0 indirect [details]
Downloads 13020 total (28 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2019-10-27 [all 1 reports]

Readme for stm-io-hooks-1.1.2

[back to package description]

This library provides a Software Transactional Memory (STM) monad with commit and retry IO hooks. A retry-action is run (at least once) if the transaction retries, while comm it-actions are executed iff the transaction commits. The AdvSTM monad also gives some atomicity guarantees for commit-actions:

  • When a TVar is modified in a transaction and this transaction commits, the update remains invisible to other threads until the corresponding onCommit action is run.

  • If the onCommit action throws an exception, the original values of the modified TVars are restored.

Note: The package can be used as a drop-in replacement for 'Control.Concurrent.STM'.