完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在测试rt-thread 在龙芯2k上线程切换所需的花销,我的思路是创建1000个线程,所创将的线程都存放在全局静态数组中,线程中的内容是将自身挂起,如果线程被唤醒,将会唤醒下一个线程,然后再第一个和最后一个线程中测算1000个线程所需的时钟,循环测试一个小时,代码如下
|
|
相关推荐
10个回答
|
|
在 shell 线程运行这个操作?
|
|
|
|
在这边运行有什么问题吗?
|
|
|
|
|
|
|
|
了解了,这样子做确实是有问题的,用hook才是最好的办法,不过大佬能看出来哪里导致线程创建失败吗?
|
|
|
|
不是一次性创建的线程吗?可能时间花在了内存的分配上
|
|
|
|
可能是RAM空间不够用了,导致线程创建失败!
测试切换时间,须严谨!线程中串口打印是很耗时间的,须将其减除。 测试切换的线程优先级要足够高,以避免其它线程干扰测量。 没必要做那么多线程,建2个线程,打乒乓式地来回切换,做个计数就可以。 |
|
|
|
我了解我这样做是有问题的啦,但是为什么会出现RAM空间不够的问题呢,我开始运行的创建1000个线程并且切换时没问题的,之后才出先了这个问题,动态创建的线程内存不是会自动释放吗?
|
|
|
|
|
|
|
|
这个我考虑到了,我在代码中是会 通过delay挂起的,从而留存线程回收的时间,这样也不可以吗?
|
|
|
|
感觉主要还是测试用例设计的方法不合理,首先任务里面会主动调度,加上中断的被动调度,你其实不能保证所有任务都能按创建顺序去执行,所以测得时间越久,线程调度顺序会越混乱,时间也越离谱
可能可以改善的修改,创建最高优先级 0 的 moniter 线程,在 moniter 线程里面创建 1000 个 1 优先级的线程,减少抢占调度的可能,在测试一下看看 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
798 浏览 0 评论
4836 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2622 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2958 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31763 浏览 11 评论
73093 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 19:30 , Processed in 0.795582 second(s), Total 90, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号