public class PriorityInheritance extends MonitorControl
t1 attempts to enter code that is synchronized on an object
obj governed by this protocol, and
obj is currently locked by a
lower-priority thread or schedulable t2, then
t1's active priority does not exceed the maximum
priority allowed by t2's scheduler,
then t1 becomes a priority source for t2;
t1 ceases to serve as a priority source for
t2 when either t2
releases the lock on obj, or
t1 ceases attempting to synchronize on obj
(e.g., when t1 incurs an ATC).
t1's active priority exceeds
the maximum priority allowed by t2's scheduler), an
IllegalTaskStateException is thrown in t1.
Note on the second rule, throwing the exception in
t1, rather than in t2, ensures that the
exception is synchronous.
See also MonitorControl and PriorityCeilingEmulation
| Modifier and Type | Method and Description |
|---|---|
static PriorityInheritance |
instance()
Obtains a reference to the singleton
PriorityInheritance. |
getMonitorControl, getMonitorControl, setMonitorControl, setMonitorControlpublic static PriorityInheritance instance()
PriorityInheritance.
This is the default MonitorControl
policy in effect at system startup.
The PriorityInheritance instance shall be allocated in
ImmortalMemory.