跑系统中,挂起任务中出现OS_PRIO_SELF怎么理解?
跑系统中,挂起任务中出现OS_PRIO_SELF怎么理解?是挂起挂起函数本身吗?还是挂起当前正在执行任务自身的?模糊不清,找不到边界感。
OSTaskSuspend(OS_PRIO_SELF);
挂起自己
gentleman 发表于 2024-2-10 18:00
挂起自己
如何回复自己呢? 本帖最后由 CosyOS 于 2024-2-10 20:45 编辑
380091044 发表于 2024-2-10 20:09
如何回复自己呢?
没有恢复自己。
因为挂起自己后,自身任务已不具备运行条件,所以会立即触发任务调度并切换到其它任务,此后该任务不能再运行(除非被别人恢复),又如何恢复自己?
所以,只有“挂起自己”、“挂起别人”、“恢复别人”,而且“挂起别人”一定要慎用,否则可能会导致不良后果。
“恢复/挂起” 常用的方式为 “挂起自己而后被别人恢复”,是实现线程同步的一种手段。
CosyOS 发表于 2024-2-10 20:32
没有恢复自己。
因为挂起自己后,自身任务已不具备运行条件,所以会立即触发任务调度并切换到其它任务,此 ...
太经典了,大家都来学习,感谢老师精彩的解答,我明白了,有了边界感! CosyOS 发表于 2024-2-10 20:32
没有恢复自己。
因为挂起自己后,自身任务已不具备运行条件,所以会立即触发任务调度并切换到其它任务,此 ...
我 的理解,再确认一下,防止理解差了,挂起的是这个任务自己,不是恢复函数"OSTaskSuspend()自己" 本帖最后由 CosyOS 于 2024-2-10 21:36 编辑
“恢复自身任务” 在实际中是不会有这种需求的。
原因是:
1、如果自身任务正在运行,又何必恢复自身?
2、如果自身任务被挂起(无论是被别人挂起还是被自己挂起),该任务都不能再运行,又如何恢复自身?
如果还有不理解的地方,请尽量描述清楚,我会耐心解答。。。
CosyOS 发表于 2024-2-10 21:21
“恢复自身任务” 在实际中是不会有这种需求的。
原因是:
1、如果自身任务正在运行,又何必恢复自身?
感谢老师耐心回答,明白了。
页:
[1]