实际上,用 rt_thread_delete() 函数删除线程接口,仅仅是把相应的线程状态更改为 RT_THREAD_CLOSE 状态,然后放入到 rt_thread_defunct 队列中;而真正的删除动作(释放线程控制块和释放线程栈)需要到下一次执行空闲线程时,由空闲线程完成最后的线程删除动作。线程删除rt_thread_delete() 接口的参数和返回值见下表: ...
rt_thread_delete(tid1);tid1 = RT_NULL;/* 线程2继续休眠10个OS Tick然后退出,线程2休眠后应...
使用动态定义方式rt_thread_create时,RT-Thread会动态申请线程控制块和堆栈空间。在编译时,编译器是不会感知到这段空 间的,只有在程序运行时,RT-Thread才会从系统堆中申请分配这段内存空间,当不需要使用该线程时,调用rt_thread_delete函数就会 将这段申请的内存空间重新释放到内存堆中。 这两种方式各有利弊,静态定...
对于使用rt_thread_create动态创建的线程,我们使用rt_thread_delete函数,如下: /* 参数:thread 要删除的线程句柄 返回值: RT_EOK 删除线程成功 -RT_ERROR 删除线程失败 */ rt_err_t rt_thread_delete(rt_thread_t thread); 调用该函数后,线程对象将会被移出线程队列并且从内核对象管理器中删除,线程占用的堆栈...
挂起状态的线程,如果调用rt_thread_delete/detach()函数,将更改为关闭状态(RT_THREAD_CLOSE); 而运行状态的线程,如果运行结束,就会在线程的最后部分执行rt_thread_exit()函数,将状态更改为关闭状态。 !!! note “注意事项” RT-Thread 中,实际上线程并不存在运行状态,就绪状态和运行状态是等同的。
RT-Thread记录(一、RT-Thread 版本、RT-Thread Studio开发环境 及 配合CubeMX开发快速上手) RT-Thread记录(二、RT-Thread内核启动流程 — 启动文件和源码分析 一、RT-Thread线程操作函数 RT-Thread线程操作包含:创建 / 初始化线程、启动线程、运行线程、删除 / 脱离线程。
任务删除删除一个任务在RT-Thread系统中分为两种,一种是删除静态任务,一种是删除动态任务。删除静态任务的接口是rt_thread_detach,删除动态任务是rt_thread_delete(当然也可以用rt_thread_detach)。由于动态任务相比静态任务需要做更多的释放资源的操作,所以本文将侧重于分析动态任务。只是需要调用某些接口的时候需要区分...
rt_mutex_delete rt_event_create rt_event_delete rt_mb_create rt_mb_delete rt_mq_create rt_mq_delete 完成量 登录后复制rt_completion_wait 队列类 登录后复制rt_wqueue_wait rt_data_queue_push rt_data_queue_pop 延时 登录后复制rt_thread_sleep ...
RT_THREAD_CLOSE状态,然后放入到rt_thread_defunct 队列中;而真正的删除动作(释放线程控制块和释放线程栈)需要到下一次执行空闲线程时,由空闲线程完成最后的线程删除动作。这个函数是对应动态线程创建函数的。 rt_err_trt_thread_delete(rt_thread_t thread); ...
rt_thread_delete/detach() 函数将挂起状态的线程更改为关闭状态。 rt_thread_exit(),处于运行状态的线程,运行结束,在线程的最后部分调用此函数,将状态更改为关闭状态。 线程控制块 在RT-Thread 中,线程控制块由结构体 struct rt_thread 表示。 线程控制块是操作系统用于管理线程的一个数据结构,它会存放线程的一些...