RTX5 | 线程管理01 - 创建线程(静态堆栈方式)
文章目录
- 一、前言
- 二、代码
- 2.1、main.h
- 2.1、main.c
- 三、DEBUG
- 四、细节补充
- 4.1、使用静态堆栈方式创建的线程只占用一点点RTX5上的内存
- 4.2、通过RTX RTOS窗口,可以观察线程的细节。
- 4.3、不建议将控制块定义为全局变量,应该由RTX动态分配。
一、前言
RTX5与其他RTOS一样,创建线程的方式分别静态堆栈与动态堆栈两种。
今天先学习使用静态堆栈方式创建RTX5线程,分别是LED线程与Start线程。LED线程用于翻转两个LED,Start线程用于创建其他线程,并printf一些信息出来。
静态堆栈方式创建线程,线程的内存由用户自己分配,但RTX5也要继续为线程分配80bytes的内存。如果喜欢用静态堆栈方式创建线程的话,可以将RTX5的Global Dynamic Memory size设置小一些,因为Global Dynamic Memory是用于动态堆栈方式,且RTX5默认将它设置32K啊。所以,如果只用静态堆栈方式创建线程的话,必须将Global Dynamic Memory设小一些,将内存预留出来。
一定要多看官方手册。官方手册上对应的内容:
二、代码
2.1、main.h
可以不包含 “rtx_os.h”,因为不需要使用控制块方式创建线程。
2.1、main.c
至于,堆栈的类型为什么是uint64_t,官方有说明:
最后,编译程序。
三、DEBUG
从Event Recorder的Debug Viewer看到Start线程正在运行。观察板子,两个LED也在闪烁。
四、细节补充
4.1、使用静态堆栈方式创建的线程只占用一点点RTX5上的内存
静态堆栈方式创建线程,相当于用户自己为线程分配内存。虽然说静态堆栈方式创建线程时,线程的内存由用户自己分配,但是并不代表完全不需要RTX5为线程继续分配内存。经过使用Event Recorder调试发现,静态堆栈方式创建线程,RTX5也需要继续为此线程分配80bytes内存。
4.2、通过RTX RTOS窗口,可以观察线程的细节。
4.3、不建议将控制块定义为全局变量,应该由RTX动态分配。
osThreadAttr_t结构体的成员cb_mem使用默认NULL,cb_size使用默认0。它们都使用默认,RTX5负责管理控制块。
cb_mem与cb_size不使用默认值时,将无法在RTX RTOS上查看到线程的细节。
RTX5 | 线程管理01 - 创建线程(静态堆栈方式)相关推荐
- RTX5 | 线程管理02 - 创建线程(动态堆栈方式)
文章目录 一.前言 二.代码 main.h main.c 三.DEBUG 四.细节补充 4.1.跟控制块方式不一样,可以在RTX RTOS观察到线程的信息 4.2.RAM相当富裕时,建议使用静态堆栈( ...
- Java并发基础01. 传统线程技术中创建线程的两种方式
传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法:二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread.这两种方式 ...
- 【并发技术01】传统线程技术中创建线程的两种方式
传统的线程技术中有两种创建线程的方式:一是继承 Thread 类,并重写 run() 方法:二是实现 Runnable 接口,覆盖接口中的 run() 方法,并把 Runnable 接口的实现扔给 T ...
- RTX5 | 消息队列01 - 创建消息队列
文章目录 一.前言 二.实验的目的 三.API 3.1.osMessageQueueId_t 3.2.osMessageQueueAttr_t 3.3.osMessageQueueNew 四.代码 4 ...
- 陈硕智能指针线程安全_C++ 创建线程的方法
C++开发过程中,创建线程是必不可少的,今天就给大家说说c++创建线程的方法,主要介绍我常用的2种方法. 第一种:CreateThread HANDLE WINAPI CreateThread( t ...
- java 创建线程_java多线程|创建线程的各种方式
javaDEMO 本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~https: ...
- 线程了解以及创建线程的Threading模块中的部分方法
了解线程 1.什么是线程 在传统的操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程,其实就是一条流水线的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源 ...
- Linux系统编程---13(线程控制函数,创建线程,循环创建多个线程,线程间共享全局变量)
线程控制 操作系统并没有提供创建线程的系统调用接口,因此大佬们封装了一个线程的接口库实现线程控制.意为着用户创建线程都使用的是库函数(所以有时候我们说创建的线程是一个用户态线程,但是在内核中对应有一个 ...
- java 线程管理_Java平台线程管理
简介 在计算机领域中,我们说的并发(concurrency)是指一些列任务的同时运行.如果一台电脑有多个处理器或者有一个多核处理器,这个同时性是真正意义上的并发:但是一台电脑只有一个单核处理器,这个同 ...
最新文章
- 利用FFmpeg切割视频
- Netweaver工作进程的内存限制 VS CloudFoundry应用的内存限制
- java POI Excel 单元格样式
- AR独角兽的死亡教训:融资3亿美元后,成投资人提线木偶,营销大于产品技术...
- mysql基础(九) 索引和视图
- 列表、元组、字典与集合
- 初探swift语言的学习笔记十(block)
- 三维CNN:收集一些最近的3d卷积网络PointNet++
- 批量恢复文件的Py脚本
- 7-5 统计大写辅音字母 (15 分)
- java中qualifier注解怎么写_Java 注解 Qualifier
- SoyNet:大豆叶部病害分类(研究思路清晰)
- python执行不了elif_浅谈对python中if、elif、else的误解
- 【Spring-tx】关于spring事务的思考
- 整理几个高质量Java自学网站
- 4种Dolby声场技术的区别
- Win8 ××× 客户端安装出现 An error occurred installing the TAP device driver 错误的解决...
- java控制台输入 scanner_java控制台输入Scanner、InputStreamReader、Console说明
- 34day 新浪微博(首页)
- Java之throw和throws的区别