RTT学习之线程

一 线程的创建和删除:
rt_thread_create()创建的句柄,对应的删除rt_thread_delete(),注意线程的删除只是将线程的状态该为close,进入空闲任务才删除。
t_thread_init()函数对应的是rt_thread_detach()
二 线程的就绪和挂起:
rt_thread_startup():使当前线程就绪;
rt_err_t rt_thread_suspend (rt_thread_t thread)使当前线程挂起但很少用,除非在调用该函数后理解调用立刻调用rt_schedule()进行调度;对应的恢复就绪rt_err_t rt_thread_resume (rt_thread_t thread)后也紧跟调用rt_schedule();
yield主动切出挂起;
rt_thread_yield()函数和rt_schedule()函数的区别:前者从当前线程中切出然后转到同优先级的其它线程执行;而后者当前线程不一定切出,只是从调度器重新检查一遍最高优先级就绪任务并执行;
三线程的休眠:
rt_err_t rt_thread_sleep(rt_tick_t tick);
rt_err_t rt_thread_delay(rt_tick_t tick);
四线程控制:rt_err_t rt_thread_control(rt_thread_t thread, rt_uint8_t cmd, void* arg);使之就绪、删除、或更改优先级
五空闲线程:
void rt_thread_idle_init(void);
void rt_thread_idle_sethook(void (*hook)(void));设置的钩子函数必须保证空闲线程在任何时刻都不会处于挂起状态,主要用于设置状态指示。低功耗模式。删除的线程资源回收。
六 线程设计:
1 需要知道什么时候让线程进入非就绪态,如果一直就绪,低优先级线程就可能得不到执行的机会。
2 需要确定线程的运行周期、运行时间、优先级的因素
 

猜你喜欢

转载自www.cnblogs.com/jieruishu/p/10250706.html
RTT