企业整站优化网站优化有哪些技巧

pingmian/2025/10/8 18:56:29/文章来源:
企业整站优化,网站优化有哪些技巧,社交网站开发意义,推荐做pc端网站layout: post title: “RT-Thread线程间通信” date: 2024-2-5 15:39:08 0800 tags: RT-Thread 线程间通信 这一篇是实际使用, 代码分析看后面的文章 一般可以使用全局变量以及线程间同步进行实现 RT-Thread也提供了一部分的通信机制 邮箱 一个线程发送, 另外的线程接受信息… layout: post title: “RT-Thread线程间通信” date: 2024-2-5 15:39:08 0800 tags: RT-Thread 线程间通信 这一篇是实际使用, 代码分析看后面的文章 一般可以使用全局变量以及线程间同步进行实现 RT-Thread也提供了一部分的通信机制 邮箱 一个线程发送, 另外的线程接受信息, 进行处理 使用邮箱的时候每一次只能发送一个四字节的数据(32位处理器),特点是开销比较低效率较高 可以发送一个地址从而达到发送多个数据的目的 非阻塞方式的邮件发送过程能够安全的应用于中断服务中, 发送以及接受信息的时候可以使用阻塞的模式 邮箱有一个缓存区, 使用rt_mailbox_t进行控制 实际使用 创建(初始化) /** 动态的方式创建* This function will create a mailbox object from system resource** param name the name of mailbox 记录一个名字* param size the size of mailbox 记录一下缓存区的大小* param flag the flag of mailbox 一个标志位** return the created mailbox, RT_NULL on error happen*/ rt_mailbox_t rt_mb_create(const char *name, rt_size_t size, rt_uint8_t flag)/** 静态的方式创建* This function will initialize a mailbox and put it under control of resource* management.** param mb the mailbox object 邮箱的句柄* param name the name of mailbox 名字* param msgpool the begin address of buffer to save received mail 缓存区的地址* param size the size of mailbox 缓冲区大小* param flag the flag of mailbox 标志** return the operation status, RT_EOK on successful*/ rt_err_t rt_mb_init(rt_mailbox_t mb,const char *name,void *msgpool,rt_size_t size,rt_uint8_t flag)这一个标志位可以为RT_IPC_FLAG_FIFO或RT_IPC_FLAG_PRIO, 设置的是挂起任务被释放的时候是按照进入的顺序先进入的先出去还是优先级比较高的先出去 删除 /**动态* This function will delete a mailbox object and release the memory** param mb the mailbox object** return the error code*/ rt_err_t rt_mb_delete(rt_mailbox_t mb) /**静态* This function will detach a mailbox from resource management** param mb the mailbox object** return the operation status, RT_EOK on successful*/ rt_err_t rt_mb_detach(rt_mailbox_t mb)发送邮件 /*** This function will send a mail to mailbox object, if there are threads* suspended on mailbox object, it will be waked up. This function will return* immediately, if you want blocking send, use rt_mb_send_wait instead.** param mb the mailbox object* param value the mail 要发送的数据** return the error code*/ rt_err_t rt_mb_send(rt_mailbox_t mb, rt_ubase_t value)这是一个不等待的时钟发送函数 /*** This function will send a mail to mailbox object. If the mailbox is full,* current thread will be suspended until timeout.** param mb the mailbox object* param value the mail* param timeout the waiting time 多了一个等待时间** return the error code*/ rt_err_t rt_mb_send_wait(rt_mailbox_t mb,rt_ubase_t value,rt_int32_t timeout)接收 /*** This function will receive a mail from mailbox object, if there is no mail* in mailbox object, the thread shall wait for a specified time.** param mb the mailbox object* param value the received mail will be saved in 给出一个存放收到的数据的位置* param timeout the waiting time** return the error code*/ rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout)使用技巧 可以使用一个这样的结构体, 每次发送这一个结构体的地址, 进行大于32字节的数据发送 struct msg {uint32_t *data;uint32_t size; }消息队列 是邮箱的扩展, 没有4字节的限制 消息队列能够接收来自线程或中断服务例程中不固定长度的消息并把消息缓存在自己的内存空间中。这些消息使用的是链表进行连接, 消息先进先出 这一个使用的拷贝的模式进行传输, 不建议直接发送大量数据(可以发送一个地址) 可以用于发送不定长的数据, 实际使用的时候可以使用消息队列发送消息, 使用邮箱表示接收到数据了 实际使用 创建 /**动态* This function will create a message queue object from system resource** param name the name of message queue 名字* param msg_size the size of message 每一个消息的大小(字节)* param max_msgs the maximum number of message in queue 记录一下消息的最大的个数* param flag the flag of message queue 一个标志** return the created message queue, RT_NULL on error happen*/ rt_mq_t rt_mq_create(const char *name,rt_size_t msg_size,rt_size_t max_msgs,rt_uint8_t flag) /**静态* This function will initialize a message queue and put it under control of* resource management.** param mq the message object 对象的句柄* param name the name of message queue* param msgpool the beginning address of buffer to save messages 缓冲区的地址, 动态申请* 的时候这个的大小是 (一个数据的大小sizeof(struct rt_mq_message)) * mq-max_msgs* param msg_size the maximum size of message一个消息的大小* param pool_size the size of buffer to save messages 缓冲区的大小* param flag the flag of message queue** return the operation status, RT_EOK on successful*/ rt_err_t rt_mq_init(rt_mq_t mq,const char *name,void *msgpool,rt_size_t msg_size,rt_size_t pool_size,rt_uint8_t flag)这一个标志位可以为RT_IPC_FLAG_FIFO或RT_IPC_FLAG_PRIO, 设置的是挂起任务被释放的时候是按照进入的顺序先进入的先出去还是优先级比较高的先出去 删除 /**动态* This function will delete a message queue object and release the memory** param mq the message queue object** return the error code*/ rt_err_t rt_mq_delete(rt_mq_t mq) /**静态* This function will detach a message queue object from resource management** param mq the message queue object** return the operation status, RT_EOK on successful*/ rt_err_t rt_mq_detach(rt_mq_t mq)发送消息 /*** This function will send a message to message queue object, if there are* threads suspended on message queue object, it will be waked up.** param mq the message queue object * param buffer the message 发送的消息的地址* param size the size of buffer 发送的数据的大小** return the error code*/ rt_err_t rt_mq_send(rt_mq_t mq, const void *buffer, rt_size_t size)不等待 /*** This function will send a message to message queue object. If the message queue is full,* current thread will be suspended until timeout.** param mq the message queue object* param buffer the message* param size the size of buffer* param timeout the waiting time** return the error code*/ rt_err_t rt_mq_send_wait(rt_mq_t mq,const void *buffer,rt_size_t size,rt_int32_t timeout)等待 /*** This function will send an urgent message to message queue object, which* means the message will be inserted to the head of message queue. If there* are threads suspended on message queue object, it will be waked up.** param mq the message queue object* param buffer the message* param size the size of buffer** return the error code*/ rt_err_t rt_mq_urgent(rt_mq_t mq, const void *buffer, rt_size_t size)发送一个紧急的消息, 这一个消息会直接放到队首 接收 /*** This function will receive a message from message queue object, if there is* no message in message queue object, the thread shall wait for a specified* time.** param mq the message queue object* param buffer the received message will be saved in 接收到的数据* param size the size of buffer* param timeout the waiting time** return the error code*/ rt_err_t rt_mq_recv(rt_mq_t mq,void *buffer,rt_size_t size,rt_int32_t timeout)信号(软件中断信号) **注: **信号这块应该是要在微内核里使用如果你是用宏内核版本不推荐使用信号功能。 POSIX标准定义了sigset_t类型来定义一个信号集, 实际是一个unsigned long类型的数据, 应用程序能够使用的信号为SIGUSR110和SIGUSR212 他的本质是一个软件中断 收到信号的线程实际的处理方法有三种 类似中断的处理程序对于需要处理的信号线程可以指定处理函数由该函数来处理。忽略某个信号对该信号不做任何处理就像未发生过一样。对该信号的处理保留系统的默认值。 需要定义RT_USING_SIGNALS这一个宏 实际使用 安装信号 如果线程要处理某一信号那么就要在线程中安装该信号。 主要用来确定信号值及线程针对该信号值的动作之间的映射关系即线程将要处理哪个信号该信号被传递给线程时将执行何种操作。 rt_sighandler_t rt_signal_install(int signo, rt_sighandler_t handler)(这一个函数是给现在的线程安装) signo信号值只有SIGUSR1和SIGUSR2是开放给用户使用的 handler设置对信号值的处理方式, 这一个的实际的函数是void (*rt_sighandler_t)(int signo); 也可以使用SIG_IGN忽略某个信号, SIG_DFL系统会调用默认的处理函数_signal_default_handler() 返回安装信号前的handler值表示成功 阻塞(屏蔽)信号 该信号将不会递达给安装此信号的线程也不会引发软中断处理。 void rt_signal_mask(int signo)解除信号阻塞 void rt_signal_unmask(int signo)发送信号 int rt_thread_kill(rt_thread_t tid, int sig)tid: 接收信号的线程 sig: 信号值 等待信号 int rt_signal_wait(const rt_sigset_t *set, rt_siginfo_t *si, rt_int32_t timeout)set: 指定等待的信号 si: 指向存储等到信号信息的指针

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外贸英文网站镇江做网站哪家公司好

4.1 处理表单的输入 先来看一个表单递交的例子&#xff0c;我们有如下的表单内容&#xff0c;命名成文件login.gtpl(放入当前新建项目的目录里面) <html> <head> <title></title> </head> <body> <form action"/login" meth…

贵阳专业做网站公司有哪些wordpress语言切换器

一、内联函数 c 语言中有宏函数的概念。宏函数的特点是内嵌到调用代码中去,避免了函数调用 的开销。但是由于宏函数的处理发生在预处理阶段,缺失了语法检测 和有可能带来的语 意差错。 特点&#xff1a; 1&#xff09;内联函数声明时inline关键字必须和函数定义结合在一起&a…

活动发布类网站开发软装设计培训

栈的定义栈是限制在表的一段进行插入和删除的运算的线性表&#xff0c;通常能够将插入、删除的一端为栈顶&#xff0c;例外一端称为栈底&#xff0c;当表中没有任何元素的时候称为空栈。通常删除(又称“退栈”)叫做弹出pop操作&#xff0c;每次删除的都是栈顶最新的元素&#x…

重庆放心seo整站优化厦门网站建设680

网站开发时经常需要在某个页面需要实现对大量图片的浏览&#xff0c;如果考虑流量的话&#xff0c;大可以像pconline一样每个页面只显示一张图片&#xff0c;让用户每看一张图片就需要重新下载一下整个页面。不过&#xff0c;在web2.0时代&#xff0c;更多人愿意用javascript来…

安康创宇网站建设昆明网站建设企业

01努比亚Z17将推送安卓9.0中关村在线消息&#xff1a;前不久&#xff0c;有消息传出努比亚Z17开发者版本系统将停止更新&#xff0c;并将永远停留在Android 7.0之后&#xff0c;引起了众多牛仔们的一篇叹息。大家纷纷在惋惜的同时&#xff0c;也着实对努比亚的做法有些不理解。…

不会代码怎么做网站岳阳seo招聘

目录 效果 步骤 一、多摄像机视角切换 二、摄像头自动旋转巡视 三、摄像头跟踪拍摄 效果 步骤 一、多摄像机视角切换 1. 打开玩家控制器“MyPlayerController”&#xff0c;添加一个变量&#xff0c;命名为“BP_SecurityCameraArray”&#xff0c;类型为“BP_SecurityCa…

建设网站宽度最好是多少钱房地产做网站不

引言 在微服务架构中&#xff0c;服务实例的健康状态对于整个系统的稳定性至关重要。Eureka作为Netflix开源的服务发现框架&#xff0c;提供了一套机制来对服务实例进行健康检查。本文将详细探讨Eureka中的服务实例健康检查机制&#xff0c;包括其工作原理、实现方式以及如何配…

广州网站seo营销模板下载官方正版app

商业卫星影像数据查询网址&#xff08;WORLDVIEW1/2/3/4、PLEIADES、SPOT系列、高景、高分1-7、资源系列、吉林一号等&#xff09; 1、资源卫星应用中心 网址&#xff1a;http://www.cresda.com/CN/ 可查询国产高分1、2、3、4、5、6、7号卫星&#xff0c;资源三号、资源三号…

成都网站优化海南北京网站建设

信用评分卡模型在国外是一种成熟的预测方法&#xff0c;尤其在信用风险评估以及金融风险控制领域更是得到了比较广泛的使用&#xff0c;其原理是将模型变量WOE编码方式离散化之后运用logistic回归模型进行的一种二分类变量的广义线性模型。 本文重点介绍模型变量WOE以及IV原理&…

德阳公司做网站微信公众平台号申请注册

即时设计资源广场 即时设计资源广场是中国优秀的UI设计网站&#xff0c;全中文环境&#xff0c;非常适合中国人使用。UI设计网站即时设计资源广场内置阿里、字节、腾讯、京东、谷歌、华为等设计系统&#xff0c;3000多个UI组件库&#xff0c;每月更新数百个高质量模板&#xf…

关于大创做网站的项目计划书网站建设与开发课程内容

1、【精选】NPOI使用手册 &#xff08;操作Excel&#xff09;-CSDN博客 2、NPOI导入Excel日期格式的处理 - 附类型格式匹配表 https://www.cnblogs.com/keitsi/p/8572093.html 3、[编程工具]使用NPIO(C#)读取xls,xlsx(Excel)表格 http://t.csdnimg.cn/PPiya

电子商务网站建设目标及利益分析淳安网站建设

物联网库&#xff0c;使用这个轻量级组件库&#xff0c;可以在任何平台上的应用程序中轻松实现物联网 (IoT) 通信协议。 nSoftware IPWorks IoT 最新的 IPWorks IoT 现已推出&#xff01;最新版本的 IPWorks IoT 具有现代化和简化的体验&#xff0c;包括 .NET 中的异步和跨平台…

城乡建设吧部网站全总基层组织建设网站

红黑树略胜AVL树 AVL树是一颗高度平衡搜索二叉树&#xff1a; 要求左右高度差不超过1&#xff08;严格平衡&#xff09; 有的大佬认为AVL树太过严格&#xff0c;对平衡的要求越严格&#xff0c;会带来更多的旋转&#xff08;旋转也还是会有一定的消耗&#xff01;&#xff01;…

网站建设过程中要注意沟通找做牙工作上哪个网站

1写在前面 今天可算把key搞好了&#xff0c;不得不说&#x1f3e5;里手握生杀大权的人&#xff0c;都在自己的能力范围内尽可能的难为你。&#x1f602; 我等小大夫也是很无奈&#xff0c;毕竟奔波霸、霸波奔是要去抓唐僧的。 &#x1f910; 好吧&#xff0c;今天是词云&#x…

平面设计师常用网站旅游的便宜的网站建设

给定一个整数&#xff0c;编写一个函数来判断它是否是 2 的幂次方。 示例 1: 输入: 1 输出: true 解释: 20 1 示例 2: 输入: 16 输出: true 解释: 24 16 示例 3: 输入: 218 输出: false 菜鸡方法&#xff1a; class Solution { public boolean isPowerOfTwo(int n)…

辽宁朝阳哪家做网站好网站怎么建立支付平台

这两天玩了一下漫威争锋Marvel Rivals&#xff0c;发现是UE5做的&#xff0c;对里面一些角色技能挺感兴趣的&#xff0c;想简单复刻一下技能功能&#xff0c;顺便复习一下学过的知识 首先把摄像机设置调整一下 CameraBoom里搜索lag 把摄像机延迟关掉 &#xff0c;这样摄像机就…

一般网站建设费用预算抚顺市建设银行网站

Service Worker 是一种在 Web 浏览器中运行的脚本&#xff0c;它独立于网页的上下文&#xff0c;并且可以在用户关闭网页后仍然在后台运行。Service Worker 可以用于实现许多功能&#xff0c;包括离线缓存、消息推送和网络代理等。 Service Worker 是一种浏览器技术&#xff0…

怎样自己做商场网站wordpress新建页面位置

MySQL 中使用浮点数和定点数来表示小数。 浮点类型有两种&#xff0c;分别是单精度浮点数&#xff08;FLOAT&#xff09;和双精度浮点数&#xff08;DOUBLE&#xff09;&#xff1b;定点类型只有一种&#xff0c;就是 DECIMAL。 浮点类型和定点类型都可以用(M, D)来表示&…

网络建设企业网站做网站贵

本主要介绍以Java为基础&#xff0c;搭建Selenium自动化测试环境&#xff0c;并且实现代码编写的过程。 1.Selenium介绍 Selenium 1.0 包含 core、IDE、RC、grid 四部分&#xff0c;selenium 2.0 则是在两位大牛偶遇相互沟通决定把面向对象结构化&#xff08;OOPP&#xff09…

长春网站开发推荐网站访问速度优化工具

插入排序 算法描述&#xff1a; 1. 从第一个元素开始&#xff0c;该元素可以认为已经被排序 2. 取出下一个元素&#xff0c;在已经排序的元素序列中从后向前扫描 3. 如果该元素&#xff08;已排序&#xff09;大于新元素&#xff0c;将该元素移到下一位置 4. 重复步骤 3&am…