Recall that, earlier in this chapter, we stated: The soft real-time scheduling policy design on Linux follows what is known as fixed priority preemptive scheduling; fixed priority implies that the application decides and fixes the thread priority (and can change it); the OS does not.
Not only can the application switch between thread priorities, but even the scheduling policy (in effect, the scheduling algorithm used under the hood by the OS) can be changed by the application developer; this can be done on a per-thread basis. That's indeed very powerful; it implies that an application having, say, five threads, can decide what scheduling policy and priority to assign to each of these threads!