Safe Haskell | None |
---|---|
Language | GHC2021 |
Multitasking.Communication
Synopsis
- newtype Variable a = Variable (TVar a)
- newVariable :: MonadSTM m => a -> m (Variable a)
- readVariable :: MonadSTM m => Variable a -> m a
- writeVariable :: MonadSTM m => Variable a -> a -> m ()
- newtype Option a = Option (TMVar a)
- newOption :: MonadSTM m => a -> m (Option a)
- newEmptyOption :: MonadSTM m => m (Option a)
- writeOption :: MonadSTM m => Option a -> a -> m ()
- putOption :: MonadSTM m => Option a -> a -> m ()
- offerOption :: MonadSTM m => Option a -> a -> m Bool
- awaitOption :: MonadSTM m => Option a -> m a
- probeOption :: MonadSTM m => Option a -> m (Maybe a)
- takeOption :: MonadSTM m => Option a -> m a
- drainOption :: MonadSTM m => Option a -> m (Maybe a)
- newtype Gate = Gate (TMVar ())
- newGate :: MonadSTM m => m Gate
- awaitGate :: MonadSTM m => Gate -> m ()
- openGate :: MonadSTM m => Gate -> m ()
- newtype Switch = Switch (TVar Bool)
- newSwitch :: MonadSTM m => Bool -> m Switch
- awaitSwitch :: MonadSTM m => Switch -> m ()
- setSwitch :: MonadSTM m => Switch -> m ()
- unsetSwitch :: MonadSTM m => Switch -> m ()
- toggleSwitch :: MonadSTM m => Switch -> m ()
- data Condition a = Condition (a -> Bool) (STM a)
- newCondition :: (a -> Bool) -> STM a -> Condition a
- awaitCondition :: MonadSTM m => Condition a -> m a
- probeCondition :: MonadSTM m => Condition a -> m (Maybe a)
- newtype Slot a = Slot (TMVar a)
- newSlot :: MonadSTM m => m (Slot a)
- putSlot :: MonadSTM m => Slot a -> a -> m Bool
- awaitSlot :: MonadSTM m => Slot a -> m a
- probeSlot :: MonadSTM m => Slot a -> m (Maybe a)
- newtype Counter = Counter (TVar Int)
- newCounter :: MonadSTM m => Int -> m Counter
- getCounter :: MonadSTM m => Counter -> m Int
- awaitCounter :: MonadSTM m => Counter -> Int -> m ()
- incrementCounter :: MonadSTM m => Counter -> m ()
- decrementCounter :: MonadSTM m => Counter -> m ()
- data Sink a
- newSink :: (a -> STM ()) -> Sink a
- putSink :: MonadSTM m => Sink a -> a -> m ()
- data Source a
- newSource :: STM a -> Source a
- takeSource :: MonadSTM m => Source a -> m a
- drainSource :: MonadSTM m => Source a -> m (Maybe a)
- newtype Queue a = Queue (TChan a)
- newQueue :: MonadSTM m => m (Queue a)
- popQueue :: MonadSTM m => Queue a -> m a
- peekQueue :: MonadSTM m => Queue a -> m a
- putQueue :: MonadSTM m => Queue a -> a -> m ()
- isEmptyQueue :: MonadSTM m => Queue a -> m Bool
- queueSource :: Queue a -> Source a
- queueSink :: Queue a -> Sink a
Variable
A Variable
holds some value in a concurrency-safe, non-blocking manner.
newVariable :: MonadSTM m => a -> m (Variable a) Source #
readVariable :: MonadSTM m => Variable a -> m a Source #
Read in a non-blocking manner
writeVariable :: MonadSTM m => Variable a -> a -> m () Source #
Write in a non-blocking manner
Option
writeOption :: MonadSTM m => Option a -> a -> m () Source #
Write in non-blocking manner
putOption :: MonadSTM m => Option a -> a -> m () Source #
Puts in a blocking manner, waiting if the Option
is not empty.
offerOption :: MonadSTM m => Option a -> a -> m Bool Source #
Offers a value to the Option
in a non-blocking manner. Returns whether the offer was accepted or not.
probeOption :: MonadSTM m => Option a -> m (Maybe a) Source #
Probes the Option
in a non-blocking manner.
takeOption :: MonadSTM m => Option a -> m a Source #
Gate
Switch
Condition,
A Condition
puts a constraint on a value that you can wait for
Slot
Counter
Sink
A Sink
represents a channel where you can only push data
Source
A Source
represents a channel where you can only read data
takeSource :: MonadSTM m => Source a -> m a Source #
Queue
popQueue :: MonadSTM m => Queue a -> m a Source #
Pop the first element of the Queue
, removing it from the queue.
Waits until an element is available.
peekQueue :: MonadSTM m => Queue a -> m a Source #
Get the first element of the Queue
, not removing it from the queue.
Waits until an element is available.
queueSource :: Queue a -> Source a Source #