concurrency-1.11.0.3: Typeclasses, functions, and data types for concurrency and STM.
Copyright(c) 2016 Michael Walker
LicenseMIT
MaintainerMichael Walker <mike@barrucadu.co.uk>
Stabilitystable
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Concurrent.Classy.QSemN

Description

Quantity semaphores in which each thread may wait for an arbitrary "amount".

Synopsis

General Quantity Semaphores

data QSemN m Source #

QSemN is a quantity semaphore in which the resource is aqcuired and released in units of one. It provides guaranteed FIFO ordering for satisfying blocked waitQSemN calls.

The pattern

bracket_ (waitQSemN n) (signalQSemN n) (...)

is safe; it never loses any of the resource.

Since: 1.0.0.0

newQSemN :: (MonadConc m, MonadFail m) => Int -> m (QSemN m) Source #

Build a new QSemN with a supplied initial quantity. The initial quantity must be at least 0.

Since: 1.0.0.0

waitQSemN :: MonadConc m => QSemN m -> Int -> m () Source #

Wait for the specified quantity to become available

Since: 1.0.0.0

signalQSemN :: MonadConc m => QSemN m -> Int -> m () Source #

Signal that a given quantity is now available from the QSemN.

Since: 1.0.0.0