> On a related note, I am curious as to how the Ada run-time system
implements dispatching. Suppose task A is running at the highest
software priority and encounters a delay statement. It then yields the
CPU to the next runable task of highest priority. Okay so far, but what
happens when task A's delay expires? How does the run-time system know
it should preempt the running task? Do implementations rely on a timer
interrupt, or poll a list of delayed queues, or something else
altogether? Perhaps one of the implementation folks would care to shed
a little light on a murky subject.
A timer interrupt is the way that is done -- the handler invokes the
dispatcher when necessary.