diff options
| author | shaojinchun <[email protected]> | 2019-10-11 09:13:40 +0800 |
|---|---|---|
| committer | shaojinchun <[email protected]> | 2019-10-12 10:51:47 +0800 |
| commit | 234af6aaa2ec2fd5c8c758a8f9fa29553ddeaf3f (patch) | |
| tree | 83e0c2fb86cb203117d537e613bab627efb72c91 /src/scheduler.c | |
| parent | 413fcba30a532e416d930e6209c331d05e2d2887 (diff) | |
修正相同优先级任务切换太频繁的问题
Diffstat (limited to 'src/scheduler.c')
| -rw-r--r-- | src/scheduler.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/scheduler.c b/src/scheduler.c index f671a49623..a4b4800d76 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -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); } } |
