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

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 函数调用图

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

相关推荐

  1. RT-1配置文件

    2024-01-20 17:48:04       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-20 17:48:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-20 17:48:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-20 17:48:04       87 阅读
  4. Python语言-面向对象

    2024-01-20 17:48:04       96 阅读

热门阅读

  1. MongoDB面试系列-02

    2024-01-20 17:48:04       54 阅读
  2. Python——turtle库笔记①

    2024-01-20 17:48:04       72 阅读
  3. C++入门学习(二)注释

    2024-01-20 17:48:04       52 阅读
  4. pytest.ini 配置

    2024-01-20 17:48:04       63 阅读
  5. 网络爬虫基本原理的介绍

    2024-01-20 17:48:04       63 阅读
  6. Chrome 浏览器 Manifest V3 版本中 scripting API 解析

    2024-01-20 17:48:04       57 阅读
  7. Go 方法

    Go 方法

    2024-01-20 17:48:04      50 阅读
  8. UE学习笔记--为什么需要使用TEXT宏包裹字符串?

    2024-01-20 17:48:04       58 阅读