完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我在测试rt-thread 在龙芯2k上线程切换所需的花销,我的思路是创建1000个线程,所创将的线程都存放在全局静态数组中,线程中的内容是将自身挂起,如果线程被唤醒,将会唤醒下一个线程,然后再第一个和最后一个线程中测算1000个线程所需的时钟,循环测试一个小时,代码如下
|
|
相关推荐
10个回答
|
|
|
在 shell 线程运行这个操作?
|
|
|
|
|
|
在这边运行有什么问题吗?
|
|
|
|
|
|
|
|
|
|
|
|
了解了,这样子做确实是有问题的,用hook才是最好的办法,不过大佬能看出来哪里导致线程创建失败吗?
|
|
|
|
|
|
不是一次性创建的线程吗?可能时间花在了内存的分配上
|
|
|
|
|
|
可能是RAM空间不够用了,导致线程创建失败!
测试切换时间,须严谨!线程中串口打印是很耗时间的,须将其减除。 测试切换的线程优先级要足够高,以避免其它线程干扰测量。 没必要做那么多线程,建2个线程,打乒乓式地来回切换,做个计数就可以。 |
|
|
|
|
|
我了解我这样做是有问题的啦,但是为什么会出现RAM空间不够的问题呢,我开始运行的创建1000个线程并且切换时没问题的,之后才出先了这个问题,动态创建的线程内存不是会自动释放吗?
|
|
|
|
|
|
|
|
|
|
|
|
这个我考虑到了,我在代码中是会 通过delay挂起的,从而留存线程回收的时间,这样也不可以吗?
|
|
|
|
|
|
感觉主要还是测试用例设计的方法不合理,首先任务里面会主动调度,加上中断的被动调度,你其实不能保证所有任务都能按创建顺序去执行,所以测得时间越久,线程调度顺序会越混乱,时间也越离谱
可能可以改善的修改,创建最高优先级 0 的 moniter 线程,在 moniter 线程里面创建 1000 个 1 优先级的线程,减少抢占调度的可能,在测试一下看看 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1033 浏览 0 评论
2877 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9386 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2898 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2302 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 05:35 , Processed in 1.016650 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2044