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

发布时间:2024年01月19日

RTOS的最基础功能是线程。

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

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

thread_sample 代码的调用关系图

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

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

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

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

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

rt_thread_startup 函数调用图

rt_thread_detach 函数调用图

动态的用rt_thread_create。

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

本例中两个线程,1和2,各只运行一次,其他时间进入延时,也就是rt_thread_mdelay,包括rt_thread_resume,rt_thread_suspend。

suspend 函数调用图

rt_thread_resume 函数调用图

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

文章来源:https://blog.csdn.net/jomoly/article/details/135686747
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。