完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我一直有个问题,像这种一直运行任务,没有什么命令可以终止任务 现在的办法,一但执行停不下来的任务,只能关机重启,这个体验有点不好。 请教一下有可以终止任务执行命令,如果有是怎么操作的? |
|
相关推荐
6个回答
|
|
关于RTT的线程执行函数
我猜测你遇到肯定是第一种情形,即: void thread_entry(void* paramenter) { while (1) { /* 等待事件的发生 */ /* 对事件进行服务、进行处理 */ } } 如果是这种情况,那么你想要退出线程的执行,你可以在while(1)中的1里做文章,比如使用一个bool变量代替这个1,类似这样: rt_bool thread_running = true; void thread_entry(void* paramenter) { while (thread_running) { /* 等待事件的发生 */ /* 对事件进行服务、进行处理 */ } } 然后你可以使用MSH_CMD_EXPORT导出一个命令,这个命令,只需要把thread_running = false即可。 这种做法,很多Java代码就是这么玩的。 当然这里有个前提是,你的线程的执行代码没有在一些阻塞接口上死等,比如等待互斥锁或者信号量这种就不行;还是有它的局限性。 仅做为一种思路参考,希望对你有所启发。 |
|
|
|
|
|
|
|
RTOS其实没有那么复杂的动态加载,所以你线程运行了就相当于执行了。如果想中途停止其实你要做很多操作,比如申请的一些空间,malloc的如何释放,一些线程如何回收,这些都是当前占着资源的。这些处理都要考虑进去才能实现ctrl+c. 做好这些对RTOS有些困难了 。
|
|
|
|
目前是没有这类强操作系统层面制终止的操作的,得用户的程序自己判断是否按下了Crtl+C,好建议 但是现在没啥想法能实现这个方案,有啥好想法吗?
|
|
|
|
|
|
|
|
非多进程系统,这个直接跟 linux 做类比有点儿欺负人了。 rtt 里的命令执行的时候都是占用 finsh 终端线程的。不可能即让 finsh 运行命令代码同时还监测键盘输入。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
590 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2241 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1233 浏览 0 评论
1788 浏览 0 评论
1464 浏览 0 评论
74811 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:51 , Processed in 0.681516 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号