rt-thread的空闲线程源码分析
rt-thread的空闲线程在是线程空闲时执行的,它的主要操作是进行“垃圾回收”,这里的“垃圾”是待close掉的线程。
1 空闲线程的实现在rt-thread线程启运时,系统会初始化空闲线程并启动它:
//...if (thread->cleanup != RT_NULL)//如果存在线程析构函数 { /* disable interrupt */ lock = rt_hw_interrupt_disable();//关中断 /* insert to defunct thread list *///rt_thread_defunct链表在系统空闲时将被空闲线程来处理 rt_list_insert_after(&rt_thread_defunct, &(thread->tlist));//将线程加入到rt_thread_defunct链表中 /* enable interrupt */ rt_hw_interrupt_enable(lock);//开中断 }//...可见,在线程被脱离或删除时,会将线程加入到回收链表rt_thread_defunct中,此链表在scheduler.c源文件中定义,专门用来保存待回收的线程.