mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-21 18:57:16 +08:00
修正相同优先级任务切换太频繁的问题
This commit is contained in:
@@ -344,8 +344,13 @@ void rt_schedule(void)
|
||||
{
|
||||
to_thread = current_thread;
|
||||
}
|
||||
else if (current_thread->current_priority == highest_ready_priority && current_thread->can_yield == 0)
|
||||
{
|
||||
to_thread = current_thread;
|
||||
}
|
||||
else
|
||||
{
|
||||
current_thread->can_yield = 0;
|
||||
rt_schedule_insert_thread(current_thread);
|
||||
}
|
||||
}
|
||||
@@ -435,8 +440,13 @@ void rt_schedule(void)
|
||||
{
|
||||
to_thread = rt_current_thread;
|
||||
}
|
||||
else if (current_thread->current_priority == highest_ready_priority && current_thread->can_yield == 0)
|
||||
{
|
||||
to_thread = current_thread;
|
||||
}
|
||||
else
|
||||
{
|
||||
current_thread->can_yield = 0;
|
||||
need_insert_from_thread = 1;
|
||||
}
|
||||
}
|
||||
@@ -578,8 +588,13 @@ void rt_scheduler_do_irq_switch(void *context)
|
||||
{
|
||||
to_thread = current_thread;
|
||||
}
|
||||
else if (current_thread->current_priority == highest_ready_priority && current_thread->can_yield == 0)
|
||||
{
|
||||
to_thread = current_thread;
|
||||
}
|
||||
else
|
||||
{
|
||||
current_thread->can_yield = 0;
|
||||
rt_schedule_insert_thread(current_thread);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user