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资源。
注:时间片仅适用于多个线程具有相同优先级的情况,不应为具有唯一优先级的线程分配时间片。
本文介绍了轮循调度和时间片的概念,这两种策略用于管理具有相同优先级的线程执行。轮循调度通过tx_thread_relinquish实现,确保所有线程都有执行机会。时间片则为每个线程分配一定数量的时钟周期,过期后其他线程有机会执行。线程的时间片可以在创建或运行时调整。时间片仅适用于多个同优先级线程,不适用于唯一优先级线程。当线程被抢占或时间片结束,它们将重新获得新的时间片,确保公平执行。
435

被折叠的 条评论
为什么被折叠?



