|A module with support for things that are enrollable (barriers and broadcast
|An enrolled wrapper for barriers that shows at the type-level whether
you are enrolled on a barrier. Enrolled Barriers should never be passed
to two (or more) processes running in parallel; if two processes synchronise
based on a single enroll call, undefined behaviour will result.
|class Enrollable b z where||Source|
Enrolls on the given barrier, then executes the given function (passing
it in the enrolled barrier) and when that function body finishes, resigns
from the barrier and returns the result. If a poison or IO exception is thrown
in the inside block, the barrier will be correctly resigned from, and
the exception rethrown.
Do not attempt to return the
enrolled barrier out of the inner function and use it afterwards.
|Resigns from a barrier, then executes the given action, and when the
action finishes, re-enrolls on the barrier and continues. This function
is designed for use from inside the body of the enroll function, to
temporarily resign from a barrier, do some things, then re-enroll. Do
not use the enrolled barrier inside the resign block. However, you may
enroll on the barrier inside this, nesting enroll and resign blocks as
much as you like
Just like enroll, but starts with an already enrolled item. During the
body, you are enrolled twice -- once from the original enrolled item (which
is still valid in the body) and once from the new enrolled item passed to
the inner function. Afterwards, you are enrolled once, on the original item
This function was added in version 1.3.2.
|Like enroll but enrolls on the given pair of barriers
|Like enroll but enrolls on the given list of barriers
|Produced by Haddock version 2.4.2|