Scheduling Attributes
The scheduling attributes are used to control the allocation of processing and synchronization among the various competing threads in an application or system.
The availability and allowable range for a particular scheduling attribute can vary with changes in other attribute values. The dependencies between scheduling attributes are hierarchical in nature and must be considered when getting or setting scheduling attribute values. A change in one attribute can force another previous attribute setting to be discarded. Figure 15 illustrates the structure of these dependency relationships.
Figure 15 – Structure of dependency relationships
To avoid unexpected loss of scheduling attribute settings and to ensure proper availability and validation, use the following sequence when setting these attributes:
1. Contention scope and inheritance policy.
2. Scheduling policy and concurrency policy
3. Priority and time-slice quantum.
The start-policy attribute can be set at any time.
This list is not meant to imply that you must set all or any of these attributes, only that you will probably have better success and suffer less confusion if you adhere to this sequence.
The following sections explain each of the scheduling attributes, their usage, and any interdependencies that might be imposed by the Threading package or the underlying thread API.