-- 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.0.1 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 Functor m => Functor (ConsistentT m) instance Applicative m => Applicative (ConsistentT m) instance Monad m => Monad (ConsistentT m) instance MonadIO m => MonadIO (ConsistentT m) instance Functor m => Functor (CTMT m) instance Applicative m => Applicative (CTMT m) instance Monad m => Monad (CTMT m) instance MonadIO m => MonadIO (CTMT m) instance MonadBaseControl IO m => MonadBaseControl IO (ConsistentT m) instance MonadBase IO m => MonadBase IO (ConsistentT m)