universum-1.2.0: Custom prelude used in Serokell

Safe HaskellSafe
LanguageHaskell2010

Universum.Lifted.Concurrent

Contents

Description

Concurrency useful and common functions.

Synopsis

MVar

data MVar a :: * -> * #

An MVar (pronounced "em-var") is a synchronising variable, used for communication between concurrent threads. It can be thought of as a a box, which may be empty or full.

Instances

NFData1 MVar

Since: 1.4.3.0

Methods

liftRnf :: (a -> ()) -> MVar a -> () #

Eq (MVar a)

Since: 4.1.0.0

Methods

(==) :: MVar a -> MVar a -> Bool #

(/=) :: MVar a -> MVar a -> Bool #

NFData (MVar a)

NOTE: Only strict in the reference and not the referenced value.

Since: 1.4.2.0

Methods

rnf :: MVar a -> () #

newEmptyMVar :: MonadIO m => m (MVar a) Source #

Lifted to MonadIO version of newEmptyMVar.

newMVar :: MonadIO m => a -> m (MVar a) Source #

Lifted to MonadIO version of newMVar.

putMVar :: MonadIO m => MVar a -> a -> m () Source #

Lifted to MonadIO version of putMVar.

readMVar :: MonadIO m => MVar a -> m a Source #

Lifted to MonadIO version of readMVar.

swapMVar :: MonadIO m => MVar a -> a -> m a Source #

Lifted to MonadIO version of swapMVar.

takeMVar :: MonadIO m => MVar a -> m a Source #

Lifted to MonadIO version of takeMVar.

tryPutMVar :: MonadIO m => MVar a -> a -> m Bool Source #

Lifted to MonadIO version of tryPutMVar.

tryReadMVar :: MonadIO m => MVar a -> m (Maybe a) Source #

Lifted to MonadIO version of tryReadMVar.

tryTakeMVar :: MonadIO m => MVar a -> m (Maybe a) Source #

Lifted to MonadIO version of tryTakeMVar.

STM

data STM a :: * -> * #

A monad supporting atomic memory transactions.

Instances

Monad STM

Since: 4.3.0.0

Methods

(>>=) :: STM a -> (a -> STM b) -> STM b #

(>>) :: STM a -> STM b -> STM b #

return :: a -> STM a #

fail :: String -> STM a #

Functor STM

Since: 4.3.0.0

Methods

fmap :: (a -> b) -> STM a -> STM b #

(<$) :: a -> STM b -> STM a #

Applicative STM

Since: 4.8.0.0

Methods

pure :: a -> STM a #

(<*>) :: STM (a -> b) -> STM a -> STM b #

liftA2 :: (a -> b -> c) -> STM a -> STM b -> STM c #

(*>) :: STM a -> STM b -> STM b #

(<*) :: STM a -> STM b -> STM a #

Alternative STM

Since: 4.8.0.0

Methods

empty :: STM a #

(<|>) :: STM a -> STM a -> STM a #

some :: STM a -> STM [a] #

many :: STM a -> STM [a] #

MonadPlus STM

Since: 4.3.0.0

Methods

mzero :: STM a #

mplus :: STM a -> STM a -> STM a #

data TVar a :: * -> * #

Shared memory locations that support atomic memory transactions.

Instances

Eq (TVar a)

Since: 4.8.0.0

Methods

(==) :: TVar a -> TVar a -> Bool #

(/=) :: TVar a -> TVar a -> Bool #

atomically :: MonadIO m => STM a -> m a Source #

Lifted to MonadIO version of atomically.

newTVarIO :: MonadIO m => a -> m (TVar a) Source #

Lifted to MonadIO version of newTVarIO.

readTVarIO :: MonadIO m => TVar a -> m a Source #

Lifted to MonadIO version of readTVarIO.

modifyTVar' :: TVar a -> (a -> a) -> STM () #

Strict version of modifyTVar.

newTVar :: a -> STM (TVar a) #

Create a new TVar holding a value supplied

readTVar :: TVar a -> STM a #

Return the current value stored in a TVar

writeTVar :: TVar a -> a -> STM () #

Write the supplied value into a TVar