STM
A monad supporting atomic memory transactions.
Software Transactional Memory: a modular composable concurrency
abstraction. See
Software Transactional Memory: a modular composable concurrency
abstraction. See
This module only defines the
STM monad; you probably want to
import
Control.Concurrent.STM (which exports
Control.Monad.STM).
Note that invariant checking (namely the
always and
alwaysSucceeds functions) has been removed. See ticket
#14324 and the
removal proposal. Existing users are
encouraged to encapsulate their STM operations in safe abstractions
which can perform the invariant checking without help from the runtime
system.
A monad supporting atomic memory transactions.
A monad supporting atomic memory transactions.
Classy software transactional memory.
A monad supporting atomic memory transactions.
An STM transaction was executed, possibly waking up some threads.
MonadSTM testing implementation, internal types and
definitions. This module is NOT considered to form part of the public
interface of this library.
Software Transactional Memory
Software Transactional Memory, or STM, is an abstraction for
concurrent communication. The main benefits of STM are
composability and
modularity. That is, using STM you can
write concurrent abstractions that can be easily composed with any
other abstraction built using STM, without exposing the details of how
your abstraction ensures safety. This is typically not the case with
other forms of concurrent communication, such as locks or
MVars.
A single statement, as in do-notation.
Are we in a do expression or a monad comprehension?
This datatype is only used to report this context to the user in error
messages.
Pattern of a do-stmt, list comprehension, pattern guard, etc