-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Eventually consistent STM transactions. -- -- Eventually consistent STM transactions. -- -- Consistent provides eventually consistent atomic transactions, by -- delaying updates until no threads is mutating a shared variable. -- -- This comes at a cost of having a separate TVar for every thread, but -- has the advantage that no thread will ever lock or retry except for -- the manager actor responsible for performing the updates. @package consistent @version 0.1.0 module Control.Concurrent.Consistent data ConsistentT m a data CTMT m a runConsistentT :: (MonadBaseControl IO m, MonadIO m) => ConsistentT m a -> m a consistently :: (MonadBaseControl IO m, MonadIO m) => CTMT m a -> ConsistentT m a data CVar a newCVar :: MonadIO m => a -> m (CVar a) dupCVar :: MonadIO m => CVar a -> m (CVar a) readCVar :: MonadIO m => CVar a -> m a writeCVar :: MonadIO m => CVar a -> a -> CTMT m () swapCVar :: MonadIO m => CVar a -> a -> CTMT m a modifyCVar :: MonadIO m => CVar a -> (a -> a) -> CTMT m () instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Concurrent.Consistent.CTMT m) instance GHC.Base.Monad m => GHC.Base.Monad (Control.Concurrent.Consistent.CTMT m) instance GHC.Base.Applicative m => GHC.Base.Applicative (Control.Concurrent.Consistent.CTMT m) instance GHC.Base.Functor m => GHC.Base.Functor (Control.Concurrent.Consistent.CTMT m) instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Concurrent.Consistent.ConsistentT m) instance GHC.Base.Monad m => GHC.Base.Monad (Control.Concurrent.Consistent.ConsistentT m) instance GHC.Base.Applicative m => GHC.Base.Applicative (Control.Concurrent.Consistent.ConsistentT m) instance GHC.Base.Functor m => GHC.Base.Functor (Control.Concurrent.Consistent.ConsistentT m) instance Control.Monad.Base.MonadBase GHC.Types.IO m => Control.Monad.Base.MonadBase GHC.Types.IO (Control.Concurrent.Consistent.ConsistentT m) instance Control.Monad.Trans.Control.MonadBaseControl GHC.Types.IO m => Control.Monad.Trans.Control.MonadBaseControl GHC.Types.IO (Control.Concurrent.Consistent.ConsistentT m)