我正在生成一个vxworks任务(taskSpawn,优先级为99)。此任务是持续处理数据。如果任务运行,我无法在vxworks shell中输入任何命令。 tShell任务优先级为105.
那么如何在shell中输入任何命令。我有一个命令来阻止任务进一步处理数据。
答案 0 :(得分:2)
VxWorks调度程序基于优先级。任务以先到先得的方式执行(默认情况下禁用循环)。
因此,如果您的任务连续运行,它会阻止所有优先级较低的任务(较高的数字= VxWorks中的较低优先级),因为调度程序选择优先级较高的任务首先运行。
为了解决这个问题,您主要有以下选择:
taskDelay(1);
。这将阻止您的线程进行一次系统勾选并启用优先级较低的线程(如您的情况下为tShell)。根据具体情况,我建议使用后者,因为根据您的任务添加taskDelay(1);
可能会显着减慢处理速度(并且使用tickSet(..)
将系统节拍增加到1000以上会大大增加中断负载)。如果您降低优先级,另一方面您的任务将运行,除了更高优先级的任务(例如shell)已准备好运行。在这种情况下,您的任务将被中断,直到更高优先级的任务完成处理(例如,执行终止命令)。