在一个线程中调用线程删除函数删除另外一个线程,这2个线程的优先级是相等的,被删除的线程也是动态创建的,出现了下面的断言内容,一般是什么情况导致的?堆栈分配不足?删除的线程和被删除的线程哪个堆栈分配不足?
(rt_object_get_type((rt_object_t)thread) == RT_Object_Class_Thread) assertion failed at function:rt_thread_delete
(rt_object_get_type((rt_object_t)thread) == RT_Object_Class_Thread)
assertion failed at function:rt_thread_delete
查看更多
rtthread不使用的线程直接退出即可,idle中会回收资源在线程中操作其他线程(挂起、删除)在rtthread中无必要也不合理,当前线程不能获取目标线程的状态,可能导致预期外的问题
RT-Object-class-thread此处提示你给delete函数的参数不对,这个指针指向的内存内容不是一个线程。是不是调用delete函数给错参数了。
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
要被删除的线程是一直要被执行的,即while循环,满足某个条件想让线程不再执行了,而那个被删除的线程是被动态创建的,所以必须用删除函数
不需要的。直接return就行,系统会自己处理。用户调用删除线程接口,极其危险
满足条件直接break跳出循环,顺序执行完函数即可,动态创建的线程同样会回收资源
这种原理上是可行的,只是纳闷为何删除线程不好用,出错概率极高