vxWorks任务阻塞shell命令输入
vxWorks task blocks shell command input
我正在生成一个vxworks任务(taskSpawn优先级99)。该任务持续处理数据。如果任务正在运行,则无法在vxworks shell中输入任何命令。tShell任务的优先级为105。
那么我如何在shell中输入任何命令呢?我有一个命令来停止任务进一步处理数据
VxWorks调度程序是基于优先级的。任务以先到先服务的方式执行(默认禁用轮询)。
因此,如果您的任务连续运行,它会阻塞所有优先级较低的任务(在VxWorks中,较高的数字=较低的优先级),因为调度器选择高优先级的任务先运行。
要处理这个问题,您主要有以下选项:
- 添加一个
taskDelay(1);
到您的处理循环。这将在一个系统tick内阻塞线程,并启用优先级较低的线程(如tShell)运行。 - 生成比shell优先级低的线程(例如110)来强制它在后台运行。
根据场景,我推荐后者,因为根据您的任务添加taskDelay(1);
可能会显着减慢处理速度(并且使用tickSet(..)
将系统tick增加到1000以上的值会显着增加中断负载)。另一方面,如果您降低优先级,则任务将运行,除非更高优先级的任务(例如shell)准备运行。在这种情况下,您的任务将被中断,直到更高优先级的任务完成处理(例如,您的终止命令被执行)。
相关文章:
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- LLVM | codegen 用于带有命令行选项的程序输入功能
- 在命令行上将输入显示到数组中时如何删除 ./a.out?
- 是否可以在命令行中将输入参数传递给可执行文件
- 使用重定向命令从 stdin 读入的字符串"<"输入文件未正确附加
- 使用 (cin) 用户输入将其粘贴到 std::system 中,并在另一个终端中运行带有输入的命令
- 提供变量作为 MATLAB 系统命令的输入参数,以便C++可执行文件
- 使用makefile中的命令行输入
- LLDB:实现接受用户输入的自定义命令
- 如何在窗口上的命令行中读取输入 .in 文件
- C++客户端/服务器聊天应用程序 - 从 Ubuntu 命令窗口扫描输入
- C++使用命令行输入 txt 文件,但打开文件失败
- 如何解析具有简单语法的输入命令
- std::cin 无法将命令行中的用户输入传递给具有 char 类型的变量吗?
- 使用系统命令时发送输入不起作用
- C 错误:从命令行输入更改为变量输入
- vxWorks任务阻塞shell命令输入
- 返回命令输入函数
- 想要创建一个应用程序,它打开控制台,并从用户作为命令输入