rtthread中rt_system_scheduler_start和 rt_schedule(函数区别
时间: 2024-06-14 14:06:03 浏览: 163
rt_system_scheduler_start函数和rt_schedule函数在rtthread中有不同的作用和功能。
1. rt_system_scheduler_start函数是rtthread系统调度器的启动函数。它负责初始化系统调度器,并启动系统的调度功能。在该函数中,会初始化线程优先级表(rt_thread_priority_table),并将主线程插入到就绪线程队列中。
2. rt_schedule函数是rtthread系统调度器的核心函数。它负责根据线程的优先级进行线程的调度。在该函数中,会根据就绪线程的优先级选择最高优先级的线程,并将其从就绪线程队列中取出,然后执行该线程的入口函数。
简单来说,rt_system_scheduler_start函数是启动系统调度器的函数,而rt_schedule函数是实际进行线程调度的函数。
示例代码如下:
```c
// rt_system_scheduler_start函数示例
void rt_system_scheduler_start(void)
{
// 初始化线程优先级表
rt_thread_priority_table_init();
// 将主线程插入到就绪线程队列中
rt_thread_ready_priority_group |= rt_current_thread->number_mask;
// 启动系统调度器
rt_schedule();
}
// rt_schedule函数示例
void rt_schedule(void)
{
// 根据线程的优先级选择最高优先级的线程
rt_thread_t *thread = rt_schedule_choose();
// 将选中的线程从就绪线程队列中取出
rt_schedule_remove(thread);
// 执行选中线程的入口函数
rt_schedule_execute(thread);
}
```
阅读全文