[QNX 自适应分区用户指南]8 自适应分区线程调度器和其他线程调度器

Posted 高桐@BILL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[QNX 自适应分区用户指南]8 自适应分区线程调度器和其他线程调度器相关的知识,希望对你有一定的参考价值。

[QNX 自适应分区用户指南] 目录

优先级和线程调度策略仅与一个自适应分区相关;如果线程调度器需要平衡预算,则优先级顺序在分区内受到遵守,而在分区之间则无法被遵守。您可以将线程调度程序与现有的 FIFO、循环和零星调度策略一起使用。但是,调度程序可能会在其时间片结束之前(循环情况)或线程运行完成之前(FIFO 情况)停止线程运行。

当线程的分区用完预算而其他分区有预算时,就会发生这种情况;也就是说,线程调度程序不会等待线程时间片的结束来确定是否从不同的分区运行线程。调度器在每个时钟周期(大多数机器上的周期为 1 毫秒)都会做出该决定。每个时间片有 4 个时钟周期。

关于FIFO调度的一个警告

注意不要滥用 FIFO 调度策略。有一种技术可以在不使用互斥锁的情况下在一组读取和写入共享数据的线程之间获得互斥:你可以让所有争夺相同共享数据的线程以相同的优先级运行。

由于一次只能运行一个线程(至少在单处理器系统上),并且使用 FIFO 调度,一个线程永远不会中断另一个线程,每个线程在运行时都垄断共享数据。这很糟糕,因为对调度器策略或优先级的任何意外更改都可能导致一个线程在其关键部分的中间中断另一个线程。所以它可能会导致代码崩溃。如果不小心将使用此技术的线程放入不同的分区(或让它们从不同的分区接收消息),它们的临界区将被破坏。

如果你的应用程序的线程使用它们的优先级来控制它们运行的​​顺序,那么你应该始终将线程放在同一个分区中,并且不应该从其他分区向它们发送消息。

写成依赖于基于其优先级以特定顺序执行的线程对应始终

以上是关于[QNX 自适应分区用户指南]8 自适应分区线程调度器和其他线程调度器的主要内容,如果未能解决你的问题,请参考以下文章

[QNX 自适应分区用户指南]8.3 在分区中启动一个进程

[QNX 自适应分区用户指南]4 快速入门:自适应分区线程调度器

[QNX 自适应分区用户指南]1.4 系统架构 - 自适应分区线程调度器

[QNX 自适应分区用户指南]3 什么是自适应分区?

[QNX 自适应分区用户指南]7 临界线程

[QNX 自适应分区用户指南]5 线程调度器详解