A Barrier
can listen for 1 or more Signals
. It will only transition
to a Pulsed
state once all the Signals
have Pulsed
.
A Pulse
is represents an unfired signal. It is the tx side of Signal
A Pulse
can only purpose it to be fired, and then it will be moved
as to never allow it to fire again. Dropping
a pulse will pulse
The signal, but the signal will enter an error state.
A Select
listens to 1 or more signals. It will wait until
any signal becomes available before Pulsing. Select
will then
return the Signal
that has been Pulsed
. Select
has no defined
ordering of events for Signal
s when there are more then one Signals
pending.
SelectMap
is a wrapper around a Select
rather then use
a unique id to find out what signal has been asserts, SelectMap
will return an supplied object.
A Signal
represents listens for a pulse
to occur in the system. A
Signal
has one of three states. Pending, Pulsed, or Errored. Pending
means the pulse has not fired, but still exists. Pulsed meaning the
pulse has fired, and no longer exists. Errored means the pulse was dropped
without firing. This normally means a programming error of some sort.
This is the default
system scheduler that is used if no
user provided scheduler is installed. It is very basic
and will block the OS thread using thread::park