An MChan is a combination of a Map and a TChan.
- data MChan k v
- newMChan :: Ord k => STM (MChan k v)
- newMChanIO :: Ord k => IO (MChan k v)
- readMChan :: Ord k => MChan k v -> k -> STM (Maybe v)
- writeMChan :: Ord k => MChan k v -> k -> v -> STM Bool
- writeMChan' :: Ord k => MChan k v -> k -> v -> STM ()
- existsMChan :: Ord k => MChan k v -> k -> STM Bool
- ensureMChan :: Ord k => MChan k v -> k -> STM ()
- deleteMChan :: Ord k => MChan k v -> k -> STM ()
Documentation
MChan is an abstract type representing a keyed, unbounded FIFO channel
newMChanIO :: Ord k => IO (MChan k v)Source
IO version of newMChan
. This is useful for creating top-level
MChan
s using System.IO.Unsafe.unsafePerformIO
, because using
atomically
inside System.IO.Unsafe.unsafePerformIO
isn't safe.
readMChan :: Ord k => MChan k v -> k -> STM (Maybe v)Source
Read the next value from an MChan. If the specified key doesn't exist (or is removed while waiting), it returns Nothing.
writeMChan :: Ord k => MChan k v -> k -> v -> STM BoolSource
Write a value to an MChan. Returns false and discards the value if the specified key doesn't exist.