vxworks - 我可以在VxWorks中实现协作多任务系统吗?

标签 vxworks

传统嵌入式系统是使用协作多任务调度程序来实现的。

该系统基本上按照以下方式工作:

  • 任务 A 确实有效
  • 当任务 A 完成时,它会产生处理器。
  • 任务 B 获取处理器并开始工作。
  • 任务 B 的成果
    ...
  • 任务 n 的产出
  • 任务 A 已安排并正常运行

一个大循环队列:A -> B -> C -> ... -> n -> A

我们正在将系统移植到新平台,并希望尽量减少系统重新设计。

有没有办法在 vxWorks 中实现这种类型的协作多任务处理?

最佳答案

虽然VxWorks是基于优先级的操作系统,但可以实现这种类型的协作多任务处理。

只需将所有任务置于相同优先级即可。
在您的代码中,您需要执行yield,只需插入“taskDelay(0);”

请注意,您必须确保禁用内核时间切片 (kernelTimeSlice(0))。

所有具有相同优先级的任务都在一个队列中。当任务让出时,它会被放置在队列的末尾。这将实现所描述的算法类型。

关于vxworks - 我可以在VxWorks中实现协作多任务系统吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/142710/

相关文章:

c++ - 定时开销二进制信号量与互斥量

sockets - 如何在 VxWorks 5.5 中接收 UDP 组播

c++ - VxWorks with Eclipse - 缺少头文件

c - 如何限制客户端服务器程序的连接数

c++ - 如何在vxworks上的c/c++中获取带有日期的系统时间(以毫秒为单位)

c++ - 在VxWorks中关闭无响应设备文件端口的正确方法是什么?

c++ - 重定位值不适合 24 位

c - 如何在 vxworks 6.7 中设置 wdb 进行内核前调试?

c++ - 如何在Vxworks中正确运行Clock-gettime获取准确时间

c++ - vxworks,在运行时确定 Debug模式