RT-Thread experimental 代码学习(1)thread_sample

RTOS的最基础功能是线程。

线程的调度是如何工作的?RT-thread官方的实验文档是最好的参考。

老规矩,先放法国人d'oxygen。

RT-Thread experimental 代码学习(1)thread_sample_第1张图片thread_sample 代码的调用关系图

有意思的是,RT有两种创建线程的方式 - 静态和动态,粗略的理解是,如果ROM大那就用静态,占用RAM小;反之就用动态。例程中两种都演示了。

静态的用rt_thread_init。要多做两件事情:

RT-Thread experimental 代码学习(1)thread_sample_第2张图片

1)要先显示的定义好堆栈。static char thread2_stack[1024];

2)并且要预先定义static的内存控制块。 static struct rt_thread thread2;

(正常使用前时要rt_thread_startup,完时要记得 - rt_thread_detach将该线程控制块从对象管理器中脱离)

RT-Thread experimental 代码学习(1)thread_sample_第3张图片

rt_thread_startup 函数调用图

RT-Thread experimental 代码学习(1)thread_sample_第4张图片

rt_thread_detach 函数调用图

动态的用rt_thread_create。

(正常使用前时要rt_thread_startup,例程中没有释放内存,正常使用完时要记得 - rt_thread_delete)

本例中两个线程,1和2,各只运行一次,其他时间进入延时,也就是rt_thread_mdelay,包括rt_thread_resume,rt_thread_suspend。RT-Thread experimental 代码学习(1)thread_sample_第5张图片

suspend 函数调用图

RT-Thread experimental 代码学习(1)thread_sample_第6张图片rt_thread_resume 函数调用图

这两个函数在后面的例程中有展示,到时候再展开。

你可能感兴趣的:(code-study,学习,c语言,单片机)