The concurrent-extra package offers among other things the
following selection of synchronisation primitives:
Broadcast: Wake multiple threads by broadcasting a value.
Event: Wake multiple threads by signalling an event.
Lock: Enforce exclusive access to a resource. Also known as a
binary semaphore or mutex. The package additionally provides an
alternative that works in the STM monad.
RLock: A lock which can be acquired multiple times by the same
thread. Also known as a reentrant mutex.
ReadWriteLock: Multiple-reader, single-writer locks. Used to
protect shared resources which may be concurrently read, but only
sequentially written.
ReadWriteVar: Concurrent read, sequential write variables.
Please consult the API documentation of the individual modules for
more detailed information.
This package was inspired by the concurrency libraries of Java and
Python.