当前位置: 首页 > news >正文

rtthread 线程

创建动态线程最简单代码

#include <rtthread.h>//包含头文件static rt_thread_t thread1 = RT_NULL; //创建线程控制块指针,指向空static void thread1_entry(void *parameter)//线程入口(干什么)
{rt_kprintf("do something");
}int thread_run(void)
{thread1 = rt_thread_create("thread1",thread1_entry, RT_NULL,1024,30,10);if (thread1 != RT_NULL)//判断创建是否成功rt_thread_startup(thread1);return 0;
}MSH_CMD_EXPORT(thread_run, thread sample);//导入命令

静态函数

  1. 其他文件中可以定义相同名字的函数,不会发生冲突。
  2. 静态函数不能被其他文件所用。
  3. 静态函数会被自动分配在一个一直使用的存储区,直到退出应用程序实例,避免了调用函数时压栈出栈,速度快很多。

静态变量

  1. 不会被其他文件所访问,修改
  2. 其他文件中可以使用相同名字的变量,不会发生冲突。

字节对齐

参考此视频

动态线程和静态线程

动态线程静态线程
内存不占用RW/ZI段空间,空间小,需要动态分配内存占用RW/ZI段空间 ,不需要动态分配内存
运行效率相对低相对高

句柄

动态线程:static rt_thread_t tid1 = RT_NULL;
静态线程:static struct rt_thread thread2;
在这里插入图片描述

参看定义,得知:typedef struct rt_thread *rt_thread_t;,会发现前者是后者的指针,本质上是一样的东西

创建方式

比较:相对动态线程,静态线程需要额外提供线程句柄和线程栈地址

动态线程静态线程
线程名字需要提供需要提供
线程入口需要提供需要提供
入口参数需要提供需要提供
线程栈大小需要提供需要提供
线程优先级需要提供需要提供
时间片轮需要提供需要提供
线程句柄不需要提供 需要提供
线程栈地址不需要提供需要提供
  1. 动态线程
 tid1 = rt_thread_create("thread1",//线程名字thread1_entry, //线程入口RT_NULL, //入口函数参数THREAD_STACK_SIZE,//线程栈大小THREAD_PRIORITY, //线程优先级THREAD_TIMESLICE);//时间片轮
  1. 静态线程
rt_thread_init(&thread2, //线程句柄"thread2",//线程名字thread2_entry,//线程函数入口RT_NULL,//入口参数&thread2_stack[0],//线程栈地址sizeof(thread2_stack),//线程栈大小THREAD_PRIORITY - 1, //线程优先级THREAD_TIMESLICE);//时间片

备注:RW/ZI段是程序总共使用的RAM字节数


#include <rtthread.h>#define THREAD_PRIORITY         25 //定义的线程优先级
#define THREAD_STACK_SIZE       512//线程栈的大小
#define THREAD_TIMESLICE        5//时间片//动态线程
static rt_thread_t tid1 = RT_NULL; //静态定义一个线程号//线程1做什么:一直打印数值
static void thread1_entry(void *parameter)
{rt_uint32_t count = 0;while (1){/* 线程1采用低优先级运行,一直打印计数值 */rt_kprintf("thread1 count: %d\n", count ++);rt_thread_mdelay(500);}
}//静态线程
ALIGN(RT_ALIGN_SIZE)//字节对齐,线程栈需要4字节对齐(4字节刚好是一个指针的大小)
static char thread2_stack[1024];//线程栈
static struct rt_thread thread2;//线程2干什么:打印十次数字之后就打印退出语句
static void thread2_entry(void *param)
{rt_uint32_t count = 0;//计数for (count = 0; count < 10 ; count++){rt_kprintf("thread2 count: %d\n", count);}rt_kprintf("thread2 exit\n");
}//运行函数,需要被外部使用所以就不能使用static定义
int thread_sample(void)
{//创建线程1tid1 = rt_thread_create("thread1",thread1_entry, RT_NULL,THREAD_STACK_SIZE,THREAD_PRIORITY, THREAD_TIMESLICE);if (tid1 != RT_NULL)rt_thread_startup(tid1);//如果创建成功,启动线程1rt_thread_init(&thread2, //创建线程2"thread2",thread2_entry,RT_NULL,&thread2_stack[0],sizeof(thread2_stack),THREAD_PRIORITY - 1, THREAD_TIMESLICE);rt_thread_startup(&thread2);return 0;
}MSH_CMD_EXPORT(thread_sample, thread sample);//导入命令

关键字和API

关键字和API解释
rt_thread_t动态线程(结构体指针)
rt_thread静态线程(结构体)
ALIGN(RT_ALIGN_SIZE)设置变量4字节对齐
rt_thread_create创建动态线程
rt_thread_init创建静态线程
MSH_CMD_EXPORT命令导入

相关文章:

rtthread 线程

创建动态线程最简单代码 #include <rtthread.h>//包含头文件static rt_thread_t thread1 RT_NULL; //创建线程控制块指针&#xff0c;指向空static void thread1_entry(void *parameter)//线程入口&#xff08;干什么&#xff09; {rt_kprintf("do something"…...

伯恩光学再成被执行人:多次因劳动纠纷被起诉,曾冲刺港交所上市

近日&#xff0c;贝多财经从天眼查APP了解到&#xff0c;伯恩光学&#xff08;深圳&#xff09;有限公司&#xff08;下称“伯恩光学”&#xff09;因《伯恩光学&#xff08;深圳&#xff09;有限公司与温*燕劳动合同纠纷的案件》一事&#xff0c;被广东省深圳市龙岗区人民法院…...

mysql基础操作2

通配符_&#xff1a;一个任意字符&#xff0c;like ‘张_’%&#xff1a;任意长度的字符串&#xff0c;like ‘co%’&#xff0c;‘%co’&#xff0c;‘%co%’【】&#xff1a;括号中所指定范围内的一个字符&#xff0c;like ‘9W0【1-2】’【^】&#xff1a;不在括号中所指定范…...

指针的进阶【下篇】

文章目录&#x1f4c0;8.指向函数指针数组的指针&#x1f4c0;9.回调函数&#x1f4c0;8.指向函数指针数组的指针 &#x1f330;请看代码与注释&#x1f447; int Add(int x, int y) {return x y; } int Sub(int x, int y) {return x - y; } int main() {int (*pf)(int, int…...

不同序列模型的输入和输出总结

不同序列模型的输入和输出总结 文章目录不同序列模型的输入和输出总结RNNLSTMGRURNN RNN 是迭代输出&#xff1a; 输入第一个 -> 输出第二个&#xff0c; 输入第二个 -> 输出第三个&#xff0c; 输出倒数第二个 -> 输出最后一个。 LSTM LSTM 也是迭代输出&#xff…...

基于神经网络补偿的主动悬架自适应控制

目录 前言 1. 1/4悬架模型 2.仿真分析 2.1仿真模型 2.2仿真结果 2.1 形① 2.2 形② 3. 总结 前言 上两篇博客我们介绍了神经网络补偿控制律的仿真测试&#xff0c;从仿真结果我们可以得知神经网络具有逼近扰动&#xff0c;并将其补偿的作用。 上两篇文章链接&#xf…...

什么是链表,如何实现?(单链表篇)

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; “仅仅活着是不够的&#xff0c;还需要有阳光&#xff0c;自由和花的芬芳。” 前言&#xff1a; 在日常使用的网站和软件中&#xff0c;列表属于最常见的一种东西了&#xff0c;其实现形式有顺序表&#xff0…...

探针台简介

探针台&#xff0c;是我们半导体实验室电学性能测试的常用设备&#xff0c;也是各大实验室以及芯片设计、封装测试的熟客。设备具备各项优势&#xff0c;高性能低成本&#xff0c;用途广&#xff0c;操作方便&#xff0c;在不同测试环境下&#xff0c;测试结果稳定&#xff0c;…...

ABAP 辨析 标准表|排序表|哈希表

1、文档介绍 本文档将介绍内表的区别和用法&#xff0c;涉及标准表、排序表、哈希表 2、用法与区别 2.1、内表种类 内表顶层为任意表&#xff0c;任意表分为索引表和哈希表&#xff0c;索引表又可分为标准表和排序表&#xff0c;结构如图&#xff1a; 2.2、内表用法 2.2.1…...

MIGO 物料过账 创建物料凭证 BAPI_GOODSMVT_CREATE

文章目录1.前台操作2.需求分析2.1调用方式2.2分为两大概括:2.3业务逻辑细节图3.BAPI_GOODSMVT_CREATE4.RFC接口代码5.总结1.前台操作 SAP CO01(创建生产订单)/MIGO(发货投料)前台操作 这里面有migo的前台操作,首先了解前台操作后再去写RFC接口是比较容易理解的.!! 2.需求分析…...

项目经理处理团队冲突 5大注意事项

1、在时间、场景、体验矩阵中的5种处理方式 第一种方式&#xff1a;强迫命令&#xff0c;即职位高的一方在不考虑对方感受的情况下&#xff0c;强迫职位低的一方接受自己的意见。这种处理方式的适用场景为重要且紧急&#xff0c;这种方式团队成员的体验感低。 第二种方式&#…...

Linux(Centos)安装TDengine

目录1&#xff1a;简介2&#xff1a;前期准备3&#xff1a;安装4&#xff1a;启动5&#xff1a;开机自启动6&#xff1a;安装客户端驱动(如果别的服务器需要链接TD则需要此步操作)7&#xff1a;基础命令1&#xff1a;简介 官网&#xff1a; https://www.taosdata.com/简介&…...

大数据处理技术导论(6) | Datawhale组队学习46期

文章目录1. hive 概述2. hive 与传统关系型数据库的对比3. hive 数据类型4. hive 数据模型5. hive 实战5.1 创建表5.2 修改表5.3 清空表、删除表5.4 其他命令项目地址 https://github.com/datawhalechina/juicy-bigdata&#xff0c;感谢项目团队的付出。本次主要学习 hive 相关…...

Java——异常

目录 什么是异常 异常处理主要的5个关键字 异常的体系结构 异常语法 异常的分类 异常的处理流程 异常的处理 防御式编程 异常的抛出 throw的注意事项 异常的捕获 异常声明throws try-catch捕获处理 finally 自定义异常类 throw和throws区别 什么是异常 程序在运行时出现错…...

Netty之io.netty.util.concurrent.Promise与io.netty.util.concurrent.Future初解

目录 目标 Netty版本 Netty官方API 三者之间的关系 基本使用方法 java.util.concurrent.Future io.netty.util.concurrent.Future io.netty.util.concurrent.Promise 目标 了解io.netty.util.concurrent.Promise与io.netty.util.concurrent.Future的基本使用方法。了解…...

【正点原子FPGA连载】第二十一章AXI DMA环路测试 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十一章AXI D…...

手把手搭建springboot项目06-springboot整合RabbitMQ及其原理和应用场景

目录前言工作流程-灵魂画手名词解释交换机类型一、安装1.1 [RabbitMQ官网安装](https://www.rabbitmq.com/download.html)1.2 Docker安装并启动二、食用教程2.1.导入依赖2.2 添加配置2.3 代码实现2.3.1 直连&#xff08;Direct&#xff09;类型2.3.2 引入消息手动确认机制2.3.2…...

如何根据IP地址判断是IPv4还是IPv6

IPv4地址的书写形式为:“192.168.0.1” IPv6地址的书写形式为:“2001:DB8:85A3:8D3:1319:8A2E:370:7344” 给你一个IP地址,它有三种可能:IPv4、IPv6、既不是IPv4也不是IPv6的无效地址。所以,如果用函数ipGetAddressAsNumber,只能判断是不是ipv4,编写如下函数: int R…...

山地车和公路车怎么选

公路车&#xff1a; 只能适应平坦的路面&#xff0c;骑行阻力小&#xff0c;速度快比较适合新手 山地车&#xff1a; 能适应所有路面&#xff0c;更注重操控性和舒适性 怎么选&#xff1f; 1、先决定用途 旅游&#xff1a;旅行车、山地车、 通勤&#xff1a;公路车 2、预…...

Zotero设置毕业论文/中文期刊参考文献格式

大家在使用zotero时很容易遇到的问题&#xff1a; 英文参考文献中有多个作者时出现“等”&#xff0c;而不是用"et al"引文最后面有不需要的DOI号&#xff0c;或者论文链接对于一些期刊分类上会出现OL字样&#xff0c;即[J/OL]作者名为全大写 本文主要解决以上几个…...

【人工智能与深度学习】自动编码器的简介

【人工智能与深度学习】自动编码器的简介 自动编码器的应用图片生成像素空间和潜在空间插值的差异图像超级分辨率图像修补由文字说明转成图片什么是自动编码器?为什么我们用自动编码器?重建损失完成过度降噪自动编码器:Denoising autoencoder压缩式自动编码器定义自动编码器…...

Isaac-gym(9):项目更新、benchmarks框架梳理

一、项目更新 近期重新git clone isaac gym的强化部分&#xff08;具体见系列第5篇&#xff09;时发现官方的github库有跟新&#xff0c;git clone下来后发现多了若干个task&#xff0c;在环境配置上也有一定区别。 例如新旧两版工程项目的setup.py区别如下&#xff1a; git …...

Linux 学习笔记(一):终端 和 Shell 的区别和联系

一、Linux 介绍 1、什么是 Linux Linux 就是一个操作系统&#xff0c;全称 GNU/Linux&#xff0c;是一种类 Unix 操作系统Linux 一开始是没有图形界面的&#xff0c;所有操作都靠 命令 完成。如 磁盘操作、文件存取、目录操作、进程管理、文件权限 等等&#xff0c;可以说 Li…...

cycleGAN算法解读

本文参考&#xff1a;https://blog.csdn.net/Mr_health/article/details/112545671 1 CycleGAN概述 CycleGAN&#xff1a;循环生成对抗神经网络&#xff0c;是一种非监督学习模型。 Pix2pix方法适用于成对数据的风格迁移&#xff0c;而大多数情况下对于A风格的图像&#xf…...

解读“方差”

其实&#xff0c;从这个标题就可以看出来&#xff0c;方差&#xff0c;这个问题不简单&#xff0c; 先给出定义&#xff1a; 方差其实应该叫&#xff0c;差方差&#xff0c;&#xff08;差方&#xff09;差&#xff0c;差的平方的差&#xff0c;与差的平方之间的误差&#xff0…...

记录面试问题

以下问题不分先后&#xff0c;按照印象深浅排序&#xff0c;可能一次记录不完成&#xff0c;后面想起来会及时补充&#xff0c;如有不对&#xff0c;恳请各位围观大佬多多指教&#x1f64f; 印象最深的是一道很简单很简单的题目&#xff0c;我结束面试之后赶紧代码敲敲发现答错…...

(六十四)设计索引的时候,我们一般要考虑哪些因素呢?(上)

本周我们将要讲解一下设计索引的时候&#xff0c;我们通常应该考虑哪些因素&#xff0c;给哪些字段建立索引&#xff0c;如何建立索引&#xff0c;建立好索引之后应该如何使用才是最合适的。 可能有的朋友会希望尽快更新后面的内容&#xff0c;但是因为工作的原因的确非常忙&a…...

【蓝桥杯嵌入式】LCD屏的原理图解析与代码实现(第十三届省赛为例)——STM32

&#x1f38a;【蓝桥杯嵌入式】专题正在持续更新中&#xff0c;原理图解析✨&#xff0c;各模块分析✨以及历年真题讲解✨都在这儿哦&#xff0c;欢迎大家前往订阅本专题&#xff0c;获取更多详细信息哦&#x1f38f;&#x1f38f;&#x1f38f; &#x1fa94;本系列专栏 - 蓝…...

论文学习——Reproducing Activation Function for Deep Learning

论文学习——Reproducing Activation Function Abstract RAFs将集中基础激活函数进行线性组合,构建出神经元级的、数据驱动的激活函数。使用RAFs为激活函数的神经网络可以重现传统的近似工具,也能相对于传统网络以更少的参数量拟合目标函数。训练过程中,RAFs可以以更好的条…...

【趣味学Python】Python基础语法讲解

目录 编码 标识符 python保留字 注释 实例(Python 3.0) 实例(Python 3.0) 行与缩进 实例(Python 3.0) 实例 多行语句 数字(Number)类型 字符串(String) 实例(Python 3.0) 空行 等待用户输入 实例(Python 3.0) 同一行显示多条语句 实例(Python 3.0) 多个语句构…...

html5做网站心得体会/搜索关键词排行榜

点击上方“机械设计一点通”关注我们&#xff0c;每天学习一个机械设计相关知识点CAD输入命令时提示未知命令“xxx”&#xff0c;常规处理方式CAD 有时输入命令&#xff0c;会提示未知命令“XXX”。按 F1 查看帮助。很多人提议重装软件&#xff0c;甚至重装系统&#xff1b;经过…...

一品威客网靠谱么/分析网站推广和优化的原因

展开全部/*闲着没事&#xff0c;瞅瞅百度上的问题&#xff0c;今天天晚了&#xff0c;先解决一个&#xff0c;另一个明儿个再说了&#xff01;第二道题也62616964757a686964616fe4b893e5b19e31333236386266算已经搞定了&#xff01;环境 : mysql Ver 14.12 Distrib 5.0.45, for…...

移动端网站建设的软件有哪些/郑州seo顾问外包公司

高考结束&#xff0c;许多同学都开始慢慢着手填写志愿&#xff0c;选择心仪的学校&#xff0c;也开始慢慢准备大学生活的东西&#xff0c;比如手机&#xff0c;电脑等设备&#xff0c;今天我们讲讲电脑该如何选择&#xff1f;明确使用场景先确定大学的志愿方向&#xff0c;来确…...

WordPress.com 托管/百度优化seo

A&#xff1a;一般来说&#xff0c;电脑音响多是有源音箱&#xff0c;其内部一定会存在放大器&#xff0c;所以噪音不可避免&#xff0c;有源音箱的噪音按来源大致可分为电磁干扰、机械噪声和热噪声等。电磁干扰主要可以分为电源变压器干扰和杂散电磁波干扰。一般来说&#xff…...

新校区建设网站/推广资源seo

干货 编辑&#xff1a;杜伟、蛋酱&#xff0c;来源&#xff1a;机器之心2021 年之后&#xff0c;机器学习将会对哪些领域产生前所未有的影响&#xff1f;在过去的数年&#xff0c;见证了机器学习&#xff08;ML&#xff09;和计算机科学领域的许多变化。按照这种长弧形的进步模…...

wordpress防止机器人注册/吉林seo技术交流

一、元素事件的绑定 为按钮绑定鼠标进入,鼠标离开,点击事件 第一种方法 $("#btn").mouseenter(function () {$(this).css("backgroundColor","red");});$("#btn").mouseleave(function () {$(this).css("backgroundColor"…...