完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
线程退出的时候,需要idle线程执行rt_thread_idle_excute才能回收退出线程的资源,但是工作线程比idle线程级别高的话,idle线程得不到执行,跟idle线程同优先级的话,idle线程会跟工作线程来回切换,占用执行太多cpu资源,是不是有点尴尬 |
|
相关推荐
9个回答
|
|
严格讲,一个系统不应该出现某个高优先级线程独占cpu的情况出现,如果出现了,首先想到的是优化。
后面你好像提到了另外一个问题, 同优先级的问题。可能不适合工作线程和 idle 线程设置同优先级。 |
|
|
|
任务一般不和idle同优先级,不过你没给idle线程留有运行的机会吗
|
|
|
|
工作线程如果比idle优先级高,idle怎么执行呢?我在工作线程里用rt_thread_yield,idle线程还是得不到执行,用rt_thread_delay又太浪费工作线程的时间。请问你们是怎么解决的
|
|
|
|
rt_thread_yield一般也不给用户使用的,因为要自己搭配schedule进行。可以使用 rt_thread_mdelay()或者线程间同步的方式
|
|
|
|
工作线程执行频次越高越好,rt_thread_mdelay一下就完蛋了
|
|
|
|
高优先级线程不能长时间占死cpu,否则你的线程设计就是有问题的。
一般一件事务处理使用一个线程,事务工作来了线程激活,完成此次处理后释放cpu,继续等待下次事务到了。 比如一个键盘扫描事务,可以设计成每10ms扫描一遍各按键按下状态,有键按下就向按键队列发按键码,一次扫描完成后等待10ms,然后再次扫描。 |
|
|
|
没有任何一个线程是长时间占用cpu的,这样才能使整个系统协调工作。
|
|
|
|
一、最好不要设置与空闲idle线程优先级相同的工作线程;
二、在一个RTOS系统当中,RTT提供了优先级抢占+时间片轮询的调度机制;基于这个调度机制,我们要合理的分配线程的优先级、时间片、延时时间(让出CPU); 三、线程让出CPU是系统能够协调工作的一个重要标准(特殊:你就是想卡在这个任务); 四、至于你说的来回切换占用CPU资源。本身RTOS的核心处理,就是线程的上下文切换,实现高实时性;并且线程切换到时间也是再ms级别;所以,从宏观上看,任务的实时性是没有影响的。 RTOS重要的是实时性,而不是占用CPU资源。 |
|
|
|
你既然建立一个线程,你就得给他有机会去执行他的任务的机会,空闲线程也是需要你给机会去执行的。 所以高优先级的线程一定会有让出机制,要么等待条件,要么延时。
如果空闲线程没机会使用到cpu,那说明你的系统设计的有问题。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
413 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
1762 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1135 浏览 0 评论
1604 浏览 0 评论
1418 浏览 0 评论
74678 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 16:29 , Processed in 1.004630 second(s), Total 85, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号