1.轮循调度
通过tx_thread_relinquish实现。
通过其处理具有相同优先级的多个线程,为相同优先级的所有其他就绪线程提供了在 relinquish 调用方再次执行之前执行的机会。
2.时间片
轮循调度的另一种形式。
1 ≤time_slice≤ 0xFFFFFFFF。在优先级相同的其他就绪线程有机会运行之前,允许该线程运行的计时器时钟周期数。
使用抢占阈值将禁用时间片。值为TX_NO_TIME_SLICE(值为 0)将禁用此线程的时间片。
时间片按每个线程提供。 线程的时间片在创建时分配,可在运行时修改。 当时间片过期时,具有相同优先级的所有其他就绪线程有机会在时间片线程重新执行之前执行。
当线程挂起、放弃、执行导致抢占的 ThreadX 服务调用或自身经过时间片后,该线程将获得一个新的线程时间片。
当时间片的线程被抢占时,该线程将在其剩余的时间片内比具有相同优先级的其他就绪线程更早恢复执行。如:时间片统一设置为 10 ms的同优先级 T 线程 A、B、C;在A运行 3 ms时 CPU 被更高优先级线程抢占,当优先级T的线程再次获的CPU运行资源时,线程A会优先获得剩余的 7ms CPU资源。
注:时间片仅适用于多个线程具有相同优先级的情况,不应为具有唯一优先级的线程分配时间片。