RTT 动态线程和静态线程
TIPS:动态线程和静态线程
RT-Thread中支持静态和动态两种定义方式。用线程来举例的话,rt_thread_init对应静态定义方式,rt_thread_create对应动态定义方式。
使用静态定义方式时,必须先定义静态的线程控制块,并且定义好堆栈空间,然后调用rt_thread_init来完成线程的初始化工作。采用这种方式,线程控制块和堆栈占用的内存会放在RW段,这段空间在编译时就已经确定,它不是可以动态分配的,所以不能被释放,而只能使用rt_thread_detach函数将该线程控制块从对象管理器中脱离。 使用动态定义方式rt_thread_create时,RT-Thread会动态申请线程控制块和堆栈空间。在编译时,编译器是不会感知到这段空间的,只有在程序运行时,RT-Thread才会从系统堆中申请分配这段内存空间,当不需要使用该线程时,调用rt_thread_delete函数就会将这段申请的内存空间重新释放到内存堆中。
这两种方式各有利弊,静态定义方式会占用RW/ZI空间,但是不需要动态分配内存,运行时效率较高,实时性较好。 动态方式不会占用额外的RW/ZI空间,占用空间小,但是运行时需要动态分配内存,效率没有静态方式高。
总的来说,这两种方式就是空间和时间效率的平衡,可以根据实际环境需求选择采用具体的分配方式
转载于:https://blog.51cto.com/svoday/1352865
RTT 动态线程和静态线程相关推荐
- RTX5 | 线程管理01 - 创建线程(静态堆栈方式)
文章目录 一.前言 二.代码 2.1.main.h 2.1.main.c 三.DEBUG 四.细节补充 4.1.使用静态堆栈方式创建的线程只占用一点点RTX5上的内存 4.2.通过RTX RTOS窗口 ...
- 【Android 逆向】Android 进程注入工具开发 ( 远程进程注入动态库文件操作 | 注入动态库 加载 业务动态库 | 业务动态库启动 | pthread_create 线程开发 )
文章目录 前言 一.加载 libnattive.so 动态库 二. libnattive.so 动态库启动 三. pthread_create 线程开发 四. 线程执行函数 前言 libbridge. ...
- java 静态线程_Java线程类静态本机void yield()方法(带示例)
线程类静态本机无效 yield()软件包java.lang.Thread.yield()中提供了此方法. yield()方法表示停止当前正在执行的线程,并为其他优先级相同的等待线程提供机会. 如果没有 ...
- java 动态线程池_线程池的参数动态调整
经典面试题 这次的文章还是绕回了我写的第三篇原创文章<有的线程它死了,于是它变成一道面试题>中留下的几个问题: 哎,兜兜转转,走走停停.天道好轮回,苍天饶过谁? 在这篇文章中我主要回答上面 ...
- 今天我们来聊一个比较实用的话题,动态可监控的线程池实践,全新开源项目
大家好,今天我们来聊一个比较实用的话题,动态可监控的线程池实践,全新开源项目(DynamicTp)地址在下方,欢迎star交流学习. 项目地址 gitee地址:gitee.com/yanhom/dyn ...
- linux 修改最大线程,Linux ulimit跟动态修改MySQL最大线程数限制
Linux ulimit和动态修改MySQL最大线程数限制 ulimit是限制进程对资源的使用,根据摩尔定律,高配的硬件现下也差不多白菜价 但软件资源限制变化不大,特别是process/file,分别 ...
- Linux中的动态库和静态库(.a/.la/.so/.o)
为什么80%的码农都做不了架构师?>>> Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序 ...
- PE学习(九)第九章:TLS 动态TLS与静态TLS
第九章:线程局部存储 PEB,在NT中,该结构可以从进程空间的FS:[0x30]处找到,PEB描述的信息主要包括:进程状态.进程堆.PE映像信息等,其中Ldr记录了进程加载进内存的所有模块的基地址. ...
- Linux C :线程操作和线程同步的多线程并发编程
在这之前可以先看看这边文章了解线程概念,信号量,条件变量,死锁.管程等概念 https://blog.csdn.net/superSmart_Dong/article/details/11666837 ...
最新文章
- Visual C++6.0安装教程(win10版)及“应用程序无法正常启动(0x0150002)”解决办法
- java自动猜测文件编码
- Linq 学习笔记(二)
- 数字的处理 :小数点四舍五入
- linux里怎样压缩文件,如何在Linux中解压缩文件
- 我今年挣了......
- 入门 | egg.js 入门之egg-jwt
- 多图片的合并(2种方式,可以设置间距)
- docker制作容器(待更新)
- OpenStack Queens版本Barbican项目介绍
- R语言建立ARIMA模型预测数据
- 财务总监的秘密:不用代码和Excel,10分钟做出高大上财务分析
- 最新稳定短视频去水印免费解析API接口分享
- linux查看内存使用情况top详解
- revel MySQL_Go语言revel环境搭建
- zxing生成带logo的二维码
- mysql 查看版本的几种方法
- 小程序前端view内容重叠问题
- EA周报 | Libra将与支付宝微信展开竞争;Google终止中国版搜索引擎;滴滴柳青:顺风车目前不能上线是因为害怕...
- “word在试图打开文件时遇到错误”解决办法,亲测可用
热门文章
- 6_分布式训练框架Horovod使用(20190111)
- Scikit-learn使用总结
- php语法大全下载,PHP下载文件
- rocketmq中consumer设计与实现
- 「Vue」vue生命周期
- mysql中文查询问题
- 【洛谷3648】[APIO2014] 序列分割(斜率优化DP)
- 洛谷 [P2590] 树的统计
- Python的numpy库中rand(),randn(),randint(),random_integers()的使用
- PHP CURL 中文说明