分别是系统线程和用户线程,系统线程是由 RT-Thread 内核创建的线程,用户线程是由应用程序创建的线程,这两类线程都会从内核对象容器中分配线程对象,当线程被删除时,也会被从对象容器中删除,如图 4-2 所示,每个线程都有重要的属性,如线程控制块、线程栈、入口函数等。
从就绪列表删除线程:当线程被挂起、延时或者删除时,会调用rt_schedule_remove_thread(rt_thread_t thread)将线程从就绪队列中移除。 线程切换:每当线程状态发生变化,RT-Thread 系统都会调用rt_schedule(void),它会找到当前就绪队列中优先级最高的线程并进行调度。可以看看RT-Thread 任务调度之抢占式调度大致了解一下r...
若某线程运行完毕,系统将自动删除线程:自动执行rt_thread_exit() 函数,先将该线程从系统就绪队列中删除,再将该线程的状态更改为关闭状态,不再参与系统调度,然后挂入rt_thread_defunct 僵尸队列(资源未回收、处于关闭状态的线程队列)中,最后空闲线程会回收被删除线程的资源。 空闲线程也提供了接口来运行用户设置的钩子...
用rt_thread_init初始化的静态线程则不能使用此接口删除。线程安全 安全 中断例程 可调用 函数参数 参数...
1.4 删除线程和脱离线程 1.5 挂起和恢复线程 1.6 其他线程辅助函数 1.6.1 获得当前线程 1.6.2 让出处理器资源 1.6.3 线程睡眠(延时函数) 1.6.4 线程控制函数 1.6.5 设置和删除空闲钩子 1.6.6 设置调度器钩子 二、RT-Thread线程创建示例 2.1 静态创建线程示例 ...
僵尸线程的操作,是在idle线程中执行。第三步:执行线程调度,切换线程。在idle线程执行,应该是保证这个线程删除后,立即调度切换线程,线程的资源回收不需要太高的优先级。 idle 线程中: rt_thread_idle_excute 负责查看rt_thread_defunct僵尸线程链表是否为空,如果不为空,则执行内存释放的操作。从线程链表移除、释放...
删除任务:rt_thread_delete 任务延时函数:rt_thread_delay 延时时候,任务处于suspend状态 任务运行情况可用finish模块,在电脑终端查看 2、动态创建线程和静态创建线程 RT-Thread中支持静态和动态两种定义方式。用线程来举例的话,rt_thread_init对应静态定义方式,rt_thread_create对应动态定义方式。
空闲线程具有最低的优先级,当系统中无其他线程可运行是,调度器将调度到空闲线程。空闲线程通常是一个死循环,永远不被挂起。除了调用钩子函数,RT-Thread也把线程清理函数、真正的线程删除动作放到了空闲线程中(改变关闭状态) 调度器相关接口 调度器相关接口
RT-Thread线程管理的主要功能是对线程进行管理和调度,系统中总共存在两类线程,分别是系统线程和用户线程,系统线程是由RT-Thread内核创建的线程,用户线程是由应用程序创建的线程,这两类线程都会从内核对象容器中分配线程对象,当线程被删除时,也会被从对象容器中删除,每个线程都有重要的属性,如线程控制块、线程栈、入口...
入口函数是线程实现预期功能的函数。线程的入口函数由用户设计,一般有以下两种形式: 无线循环模式 这种线程会一直被系统循环调度,执行任务,不会删除。 void thread_entry(void *parameter) { while(1) { /* 线程处理 */ } } 1. 2. 3. 4. 5.