Performs a single round of scheduling, blocking if necessary.
A reason is returned:
See Implementation
Performs a single round of scheduling, blocking if necessary.