任务管理

thread.hpp

System::Thread::Priority

功能

线程优先级定义

实现

typedef enum { IDLE, LOW, MEDIUM, HIGH, REALTIME } Priority;

void System::Thread::Create()

功能

创建线程,在裸机平台无效。

定义

template <typename FunType, typename ArgType>
void Create(FunType fun, ArgType arg, const char* name, size_t stack_depth, Priority priority);

返回值

  • void

参数

  • FunType void (fun*)(ArgType) 线程服务函数
  • ArgType arg 线程参数
  • const char* name 线程名称
  • uint32_t stack_depth 堆栈深度
  • Priority priority 线程优先级

用法

auto thread_fn = [](ArgType arg) {
...
};

this->thread_.Create(thread_fn, arg, "task_name", 256, Thread::MEDIUM);

System::Thread& System::Thread::Current(void)

功能

获取当前线程对象

返回值

  • System::Thread& 当前线程对象

参数

  • void

示例

System::Thread::Current().SleepMilliseconds(1000);

void System::Thread::Yield(void)

功能

切换到下一个就绪的线程

返回值

  • System::Thread& 当前线程对象

参数

  • void

示例

System::Thread::Current().SleepMilliseconds(1000);

void System::Thread::Delete(void)

功能

删除一个线程

返回值

  • void

参数

  • void

void System::Thread::Sleep(uint32_t ms)

功能

延时毫秒

返回值

  • void

参数

  • uint32_t ms 要延时的毫秒数

同类接口

void System::Thread::SleepMilliseconds(uint32_t ms)
void System::Thread::SleepSeconds(uint32_t ms)
void System::Thread::SleepMinutes(uint32_t s)
void System::Thread::SleepHours(uint32_t h)
void System::Thread::SleepDays(uint32_t d)

void System::Thread::SleepUntil(uint32_t ms, uint32_t& last_wakeup_time)

功能

延时至毫秒

返回值

  • void

参数

  • uint32_t ms 要延时的毫秒数
  • uint32_t ms 上次唤醒时间

用法

auto thread_fn = [](ArgType arg){
    uint32_t last_wakeup_time = 0U;
    ...
    while(1){
        ...
        /* 保证100hz运行 */
        System::Thread::Current().SleepUntil(10, last_wakeup_time);
    }
};

同类接口

void System::Thread::SleepUntilMilliseconds(uint32_t ms)

timer.hpp

System::Timer::Create(FunType fun, ArgType arg, uint32_t cycle)

定义

template <typename FunType, typename ArgType>
TimerHandle System::Timer::Create(FunType fun, ArgType arg, uint32_t cycle)

功能

创建一个定时任务,创建完成后立刻开始运行

返回值

  • TimerHandle 任务句柄

参数

  • void (*fun)(ArgType) 任务函数
  • ArgType arg 任务参数
  • uint32_t cycle 任务执行周期(ms)

void System::Timer::Delete(TimerHandle& timer)

功能

删除一个定时任务

返回值

  • void

参数

  • TimerHandle& timer 任务句柄

void System::Timer::Start(TimerHandle& timer)

功能

开始一个定时任务

返回值

  • void

参数

  • TimerHandle& timer 任务句柄

void System::Timer::Stop(TimerHandle& timer)

功能

暂停一个定时任务

返回值

  • void

参数

  • TimerHandle& timer 任务句柄

void System::Timer::SetCycle(TimerHandle& timer, uint32_t cycle)

功能

更改定时任务执行周期

返回值

  • void

参数

  • TimerHandle& timer 任务句柄
  • uint32_t cycle 任务执行周期