diff options
| author | Bernard Xiong <[email protected]> | 2020-10-01 15:46:10 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-10-01 15:46:10 +0800 |
| commit | aeff91b2a7fc846cf3724c01c28fbd7327bd2bac (patch) | |
| tree | 70a60a6912fe592227d58ea860f80119c131003d /src/thread.c | |
| parent | c758168877bef84355905c6e80f79a5abd6b16fc (diff) | |
| parent | 3ed84b8d03dc9778f1c262278e2b8653de834408 (diff) | |
Merge pull request #3769 from jesven/fix_yield
解决yield操作不能及时释放cpu的问题
Diffstat (limited to 'src/thread.c')
| -rw-r--r-- | src/thread.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/thread.c b/src/thread.c index 9f80482b20..7a90e57f25 100644 --- a/src/thread.c +++ b/src/thread.c @@ -478,7 +478,15 @@ RTM_EXPORT(rt_thread_delete); */ rt_err_t rt_thread_yield(void) { + struct rt_thread *thread; + rt_base_t lock; + + thread = rt_thread_self(); + lock = rt_hw_interrupt_disable(); + thread->remaining_tick = thread->init_tick; + thread->stat |= RT_THREAD_STAT_YIELD; rt_schedule(); + rt_hw_interrupt_enable(lock); return RT_EOK; } |
