Overview of Ada 2022
Jeff Cousins
Contents   Index   Search   Previous   Next 

6.7 Nonpreemptive dispatching needs more dispatching points

In non-preemptive dispatching there needs to be sufficient points where rescheduling can occur, so as to restrict the amount of time that a low priority task can block a higher priority task. If the low priority task “gets lucky” and the entries it calls are open, and suspension objects true, it can be some time before a rescheduling point occurs.
Nonpreemptive dispatching needs more dispatching points (AI12-0279) provides a solution to this is by defining a Yield aspect that can be specified for a subprogram (see RM D.2.1). If a reschedule has not occurred within a call of the subprogram, then one is inserted at the return from the subprogram.

Contents   Index   Search   Previous   Next 
© 2021, 2022 Jeff Cousins