前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RT-Thread experimental 代码学习(1)thread_sample

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

原创
作者头像
用户10917351
修改2024-01-19 18:50:29
1140
修改2024-01-19 18:50:29
举报
文章被收录于专栏:代码学习代码学习

RTOS的最基础功能是线程。

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

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

thread_sample 代码的调用关系图
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_detach 函数调用图
rt_thread_detach 函数调用图

动态的用rt_thread_create。

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

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

suspend 函数调用图
suspend 函数调用图
rt_thread_resume 函数调用图
rt_thread_resume 函数调用图

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

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档