This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/EVMK2H:两个相同优先级任务的一个活动任务是否能够被另一个任务抢先?

Guru**** 2952510 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/674046/rtos-evmk2h-is-one-active-task-of-two-same-priority-task-able-to-be-preempted-by-the-other-task

器件型号:EVMK2H

工具/软件:TI-RTOS

我对 TI-RTOS 任务调度有一些疑问。

1:同一优先级任务的一个活动任务是否能够被另一个任务抢先?

2.如果任务 A 与任务 B 的优先级相同、并且邮箱被布置到任务 B、那么 任务 A 是否在任务 A 操作未完成的情况下被任务 B 抢先?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    据我所知、如果有优先级相同的任务、则执行 CPU 首先执行的任务。 程序员有责任使用定时器或锁来避免竞争条件。

    如果需要、我会请设计团队详细说明。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、MinJi、

    具有相同优先级的任务永远不会相互取代。 假设任务 A 和任务 B 具有相同的优先级。 如果任务 A 正在运行并且任务 B 准备就绪、任务 A 继续运行。 任务 B 的唯一运行方式是 if
    1.任务 A 达到阻塞状态(例如调用 Task_sleep 或具有超时且不可用的 Semaphore_pend 等)
    2.任务 A 调用 Task_yield。 Task_yield 为具有相同优先级的下一个就绪任务提供控制权。 如果现在已准备就绪、Task_yield 立即返回、任务 A 继续。
    3.任务 A 终止
    4.降低任务 A 的优先级或提升任务 B 的优先级。


    Todd

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为了清零、如果任务 A 被一个更高的线程(Hwi、Swi 或任务)抢先、当该线程完成时、任务 A 将恢复(而不是任务 B)。

    [此外、我编辑了上述帖子、以添加另一种运行任务 B 的方式(#4)]

    Todd