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 Signals when there are more then one Signals
pending.
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