PX4项目学习::(四)中间件::任务管理与调度

PX4项目采用Tasks和Workqueue任务运行方式,Tasks拥有独立堆栈和优先级,而Workqueue共享堆栈,适用于周期性任务且不支持任务休眠。px4_task_spawn_cmd函数用于启动任务。工作队列通过ScheduledWorkItem类进行管理,利用高精度hrt定时中断实现高效调度,但长时间任务可能影响其他队列的执行。

1、PX4模块运行方式

PX4项目采用两种方式运行:

  1. Tasks

  2. Work queue tasks

    Tasks: 模块在自己的任务中运行,具有自己的堆栈和进程优先级。
    Work queue tasks:多个任务在同一堆栈上运行,与队列中的其他模块共享相同的堆栈和工作队列线程优先级。
    

工作队列的优点是 RAM 占用更少,减少任务切换,缺点是队列任务不能休眠,也不能轮询消息。对于运行时间比较长的任务应该使用Tasks或者在一个独立的工作队列中

工作队列(work Queue)用于执行周期性任务,如传感器驱动程序。

2、PX任务启动方式

px4_task_spawn_cmd() 用来启动任务:

independent_task = px4_task_spawn_cmd(
    "commander",                    // Process name
    SCHED_DEFAULT,                  // Scheduling type (RR or FIFO)
    SCHED_PRIORITY_DEFAULT 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值