privileged-concurrency-0.7.0: Provides privilege separated versions of the concurrency primitives.

Copyright(c) Jeff Shaw 2012
LicenseBSD, see the file LICENSE
Maintaineromeragacan@gmail.com
Stabilityexperimental
Portabilitynon-portable (concurrency)
Safe HaskellSafe
LanguageHaskell2010

Control.Concurrent.Privileged

Contents

Description

Privilege separated concurrency abstractions.

Synopsis

Privilege Separated Concurrent Haskell

Re-exports

data Chan a :: * -> * #

Chan is an abstract type representing an unbounded FIFO channel.

Instances

ChanRead Chan Source # 

Methods

readChan :: MonadIO m => Chan a -> m a Source #

ChanWrite Chan Source # 

Methods

writeChan :: MonadIO m => Chan a -> a -> m () Source #

writeList2Chan :: MonadIO m => Chan a -> [a] -> m () Source #

ChanDup Chan Source # 

Methods

dupChan :: MonadIO m => Chan a -> m (Chan a) Source #

Eq (Chan a) 

Methods

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

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

newChan :: MonadIO m => m (Chan a) #

Lifted newChan.

Since: 0.1.0.0

modifyMVar :: MonadUnliftIO m => MVar a -> (a -> m (a, b)) -> m b #

Unlifted modifyMVar.

Since: 0.1.0.0

modifyMVar_ :: MonadUnliftIO m => MVar a -> (a -> m a) -> m () #

Unlifted modifyMVar_.

Since: 0.1.0.0

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

MVarRead MVar Source # 

Methods

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

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

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

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

withMVar :: MonadUnliftIO m => MVar a -> (a -> m b) -> m b Source #

MVarWrite MVar Source # 

Methods

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

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

Eq (MVar a) 

Methods

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

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

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

Lifted newEmptyMVar.

Since: 0.1.0.0

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

Lifted newMVar.

Since: 0.1.0.0

newTChan :: STM (TChan a) #

Build and return a new instance of TChan

data TChan a :: * -> * #

TChan is an abstract type representing an unbounded FIFO channel.

Instances

TChanRead TChan Source # 
TChanWrite TChan Source # 

Methods

writeTChan :: TChan a -> a -> STM () Source #

unGetTChan :: TChan a -> a -> STM () Source #

isEmptyTChan :: TChan a -> STM Bool Source #

TChanDup TChan Source # 

Methods

dupTChan :: TChan a -> STM (TChan a) Source #

Eq (TChan a) 

Methods

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

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

newEmptyTMVar :: STM (TMVar a) #

Create a TMVar which is initially empty.

newTMVar :: a -> STM (TMVar a) #

Create a TMVar which contains the supplied value.

data TMVar a :: * -> * #

A TMVar is a synchronising variable, used for communication between concurrent threads. It can be thought of as a box, which may be empty or full.

Instances

TMVarRead TMVar Source # 
TMVarWrite TMVar Source # 

Methods

putTMVar :: TMVar a -> a -> STM () Source #

tryPutTMVar :: TMVar a -> a -> STM Bool Source #

Eq (TMVar a) 

Methods

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

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

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

Create a new TVar holding a value supplied

data TVar a :: * -> * #

Shared memory locations that support atomic memory transactions.

Instances

TVarRead TVar Source # 

Methods

readTVar :: TVar a -> STM a Source #

TVarWrite TVar Source # 

Methods

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

Eq (TVar a) 

Methods

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

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