HaskellWorks.Polysemy.Control.Concurrent.QSem
data QSem #
QSem is a quantity semaphore in which the resource is acquired and released in units of one. It provides guaranteed FIFO ordering for satisfying blocked waitQSem calls.
QSem
waitQSem
The pattern
bracket_ waitQSem signalQSem (...)
is safe; it never loses a unit of the resource.
newQSem :: MonadIO m => Member (Embed m) r => Int -> Sem r QSem Source #
waitQSem :: MonadIO m => Member (Embed m) r => QSem -> Sem r () Source #
signalQSem :: MonadIO m => Member (Embed m) r => QSem -> Sem r () Source #
bracketQSem :: MonadIO m => Member (Embed m) r => Member Resource r => QSem -> Sem r a -> Sem r a Source #