VxWorks имеет 256 уровней приоритета (0 - самый высокий, 255 - самый низкий). В любой момент времени задача с наивысшим приоритетом выполняется на процессоре. Каждый уровень приоритета концептуально имеет очередь, в которой несколько задач стоят в очереди на выполнение.
У нас есть 3 задачи с одинаковым приоритетом A, B, C. Предположим, что A выполняется.
Когда блоки A (taskDelay, SemTake, msgQReceive), B начнут выполнение.
Когда A разблокируется, он помещается в конец очереди. Теперь у нас есть B, C, A.
Когда B блокирует, C вступает во владение, и т.д ...
Если включено циклическое планирование (квантование по времени), применяется та же концепция, но задача помещается в конец очереди, когда ее временной интервал заканчивается.
Обратите внимание, что задача, перед которой стоит задача с более высоким приоритетом, НЕ повлияет на порядок очереди. Если A был запущен и получил приоритет, он продолжит выполнение после выполнения задачи с более высоким приоритетом. Он не помещается в конец очереди.