| ... | ... | @@ -87,6 +87,9 @@ It is recommended that the implementation provide "single-wakeup" semantics for |
|
|
|
blocked in `takeMVar` on a particular `MVar`, and the `MVar` becomes full, only one thread will be woken up. The implementation
|
|
|
|
guarantees that the woken thread completes its `takeMVar` operation. In fact, a single-wakeup implementation is usually a consequence of providing the fairness extension for `MVar`s above: if multiple threads blocked on an `MVar` were woken up simultaneously, it would be hard to guarantee that any particular thread would eventually gain access to the `MVar`.
|
|
|
|
|
|
|
|
|
|
|
|
The full range of `MVar` operations are described in the documentation for `Control.Concurrent.MVar`, see ??. A range of concurrent communication facilities can be provided based on `MVar`s, these are expected to be supplied as separate libraries.
|
|
|
|
|
|
|
|
**ToDo?** STM?
|
|
|
|
|
|
|
|
## Concurrency and the FFI
|
| ... | ... | |