15.4 Synchronizable Events
A synchronizable events is an object that can be used with Evt.sync to wait until it is ready for synchronization. Synchronizing a ready event may have a side effect and an associated value. For example, synchronizing on a Semaphore is the same as using Semaphore.wait, so it decrements the semaphore’s count.
annotation | |
The Evt annotation interface-like in the sense that every Evt supports the Evt.sync method.
method | ||||||
|
method | ||||
| ||||
| ||||
enumeration | ||||
If return is #'no_break, then wrapf is called with breaks (in the sense of Thread.break) disabled.
If return is #'tail, then wrapf is called in tail position with respect to a synchronization request via Evt.sync. When the Evt produced by Evt.wrap is wrapped by another Evt.wrap with #'no_break, however, this tail-call behavior is disabled.
The Evt.never synchronizable event is never ready for synchronization.
annotation | |
| |
annotation | |
A CommitEvt is used in combination with a ProgressEvt for Port.Input.Progress.commit. A CommitEvt is either a Semaphore, channel-put event, channel, semaphore-peek event, Evt.always, or Evt.never.
interface | |
The interface has a single abstract method:
as_evt() —
produces an synchronizable event that can be used in Evt.sync.