完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
开发环境:Rtt studio + stm32f407 + rtt4.1.0 预解决问题: 1.在一个线程A启动和杀死另一个线程B。 1.1满足条件B1,启动线程B; 1.2满足条件B2,杀死线程B; static void thread_a(void * parameter) 线程B的主要内容是执行一个加减速过程。就是有一个数组speed_array[200],数组里存不同的速度值,然后每隔一定的时间取下一个元素的值,从而实现变曲线控制。 但是在实现加速的过程中,允许直接停止,不再进行加速。比如线程B: static void thread_b(void * parameter) 但是我这么做提示删除断言错误。 |
|
相关推荐
7个回答
|
|
rtthread 不支持 A 线程直接 delete B 线程
需要 A 线程通知 B 线程,告诉它你退出吧。然后 B 线程自己跳出 while 循环 至于怎么“通知”,手段还是比较多的,比如全局变量标志啊,消息机制啊 你这个,看样子,判断一个全局变量标志也能实现 |
|
|
|
我现在也是变量来控制,这么做的。就是想看看线程A启动和删除线程B这个事情行不行得通。
|
|
|
|
delete 另外一个线程是很危险的,除非你知道它已经不运行了
|
|
|
|
rtt 能不能delete线程就线程自己管理,自己删除了。因为删除的用意本身就想不让这个线程继续了,需要再创建。但是感觉这样也不太好,干脆创建一个线程,然后这个线程要么挂起,要么条件达到,恢复运行而已了。
|
|
|
|
其实可以不用杀死线程来实现,可以改成增加一个挂起标志位,然后每次都是等待ms的信号量,当外部通过发送一个信号量的时候,就立即将该标志位清除,然后等信号量变成一直等待,如此来回切换
|
|
|
|
我想在是使用全局变量,条件A达到就挂起,条件B达到就恢复。还没使用信号量。
|
|
|
|
竟然用了rtt就不要停留在裸机的开发思维里面,os的内核特性和优点要发挥起来,不然用os不就是只用到任务调度了吗
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
753 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2714 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1368 浏览 0 评论
1955 浏览 0 评论
1523 浏览 0 评论
74939 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 20:35 , Processed in 0.821314 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号