hw-polysemy-0.3.1.2: Opinionated polysemy library
Safe HaskellSafe-Inferred
LanguageHaskell2010

HaskellWorks.Polysemy.Control.Concurrent.QSem

Synopsis

Documentation

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.

The pattern

  bracket_ waitQSem signalQSem (...)

is safe; it never loses a unit of the resource.

newQSem :: forall r m. MonadIO m => Member (Embed m) r => Int -> Sem r QSem Source #

waitQSem :: forall r m. MonadIO m => Member (Embed m) r => QSem -> Sem r () Source #

signalQSem :: forall r m. MonadIO m => Member (Embed m) r => QSem -> Sem r () Source #

bracketQSem :: forall a r m. MonadIO m => Member (Embed m) r => Member Resource r => QSem -> Sem r a -> Sem r a Source #