Prioritization

Updated: April 19, 2023

Consider two threads capable of using the CPU. If these threads have different priorities, then the answer is really quite simple; the kernel gives the CPU to the highest priority thread. QNX Neutrino's priorities go from one (the lowest usable) and up, as we mentioned when we talked about obtaining mutexes. Note that priority zero is reserved for the idle thread—you can't use it. (If you want to know the minimum and maximum values for your system, use the functions sched_get_priority_min() and sched_get_priority_max()—they're prototyped in <sched.h>. In this book, we'll assume one as the lowest usable, and 255 as the highest.)

If you want to know the minimum and maximum priority values for your system, use the functions sched_get_priority_min() and sched_get_priority_max()—they're prototyped in <sched.h>. In this book, we'll assume one as the lowest usable value, and 255 as the highest.

If another thread with a higher priority suddenly becomes able to use the CPU, the kernel will immediately context-switch to this thread. We call this preemption; the higher-priority thread preempted the lower-priority thread. When the higher-priority thread is done, and the kernel context-switches back to the lower-priority thread that was running before, we call this resumption; the kernel resumes running the previous thread.