gpt4 book ai didi

c++ - vxWorks 任务阻塞 shell 命令输入

转载 作者:行者123 更新时间:2023-11-28 02:22:00 24 4
gpt4 key购买 nike

我正在生成一个 vxworks 任务(优先级为 99 的 taskSpawn)。该任务正在不断地处理数据。如果任务运行,我无法在 vxworks shell 中输入任何命令。 tShell 任务的优先级为 105。

那么我怎样才能在 shell 中输入任何命令。我有一个命令来停止任务进一步处理数据。

最佳答案

VxWorks 调度器是基于优先级的。任务按先到先得的原则执行(默认情况下禁用循环法)。

因此,如果您的任务连续运行,它会阻止所有优先级较低的任务(在 VxWorks 中,较高的数字 = 较低的优先级),因为调度程序会选择优先级较高的任务首先运行。

要解决这个问题,您主要有以下选择:

  • taskDelay(1); 添加到您的处理循环中。这会在一个系统时钟周期内阻塞您的线程,并使优先级较低的线程(如您的情况下的 tShell)运行。
  • 生成优先级低于 shell 的线程(例如 110)以强制它在后台运行。

根据具体情况,我推荐后者,因为根据您的任务添加 taskDelay(1); 可能会显着减慢处理速度(并使用 tickSet(..) 到 1000 以上的值会显着增加中断负载)。另一方面,如果您降低优先级,您的任务将运行,但更高优先级的任务(例如 shell)已准备好运行。在这种情况下,您的任务将被中断,直到更高优先级的任务完成处理(例如,您的终止命令被执行)。

关于c++ - vxWorks 任务阻塞 shell 命令输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32072495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com