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.
Also known as a reentrant mutex.
resources which may be concurrently read, but only sequentially written.
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.