文档首页/ LiteOS/ 内核/ 任务/ 注意事项
更新时间:2021-07-08 GMT+08:00
分享

注意事项

  • 执行Idle任务时,会对之前已删除任务的任务控制块和任务栈进行回收。
  • 任务名是指针,并没有分配空间,在设置任务名时,禁止将局部变量的地址赋值给任务名指针。
  • 任务栈的大小按16字节大小或者sizeof(UINTPTR) * 2对齐。确定任务栈大小的原则是,够用就行,多了浪费,少了任务栈溢出。
  • 挂起当前任务时,如果任务已经被锁定,则无法挂起。
  • Idle任务及软件定时器任务不能被挂起或者删除。
  • 在中断处理函数中或者在锁任务的情况下,执行LOS_TaskDelay会失败。
  • 锁任务调度,并不关中断,因此任务仍可被中断打断。
  • 锁任务调度必须和解锁任务调度配合使用。
  • 设置任务优先级时可能会发生任务调度。
  • 可配置的系统最大任务数是指:整个系统的任务总个数,而非用户能使用的任务个数。例如:系统软件定时器多占用一个任务资源,那么用户能使用的任务资源就会减少一个。
  • LOS_CurTaskPriSet和LOS_TaskPriSet接口不能在中断中使用,也不能用于修改软件定时器任务的优先级。
  • LOS_TaskPriGet接口传入的task ID对应的任务未创建或者超过最大任务数,统一返回0xffff。
  • 在删除任务时要保证任务申请的资源(如互斥锁、信号量等)已被释放。
  • 在多核模式下,锁任务调度只能锁住当前核的调度器,其他核仍然能正常调度。
  • 在多核模式下,由于跨核间任务的删除或挂起是异步执行的,因此操作的返回值并不代表最终操作的结果,仅代表上述请求已经发出。同时执行完成会存在延时。
  • 在多核模式下,如果开启任务跨核删除同步的功能(LOSCFG_KERNEL_SMP_TASK_SYNC选项),则跨核删除任务时,需要等待目标任务删除后才会返回结果,如果在设定的时间内未成功将任务删除,则会返回LOS_ERRNO_TSK_MP_SYNC_FAILED错误。开启该功能后,每个任务会增加1个信号量的开销。

相关文档