信号量、邮箱、队列与事件

2023-05-16

信号量,邮箱,队列的最大不同在于它们发送的内容不同。

信号量是一个触发信号,也是一个计数器,等待接收信号的任务一般只有接收到信号才可以执行,否则任务一直暂停。

邮箱是信号量的扩展,相当于把一个指针定义的变量从一个任务传递到另一个或多个任务中去,这个指针是先发到邮箱,然后等待任务从邮箱里提取指针,这也就传递了指针指向的具体变量值。  

队列是多个邮箱的数组,可以看做是个指针数组,任务之间可以按照一定顺序以指针定义的变量来传递,即是发送一个个指针给任务,任务获得指针,来处理指向的变量。这个方式有先进先出,先进后出。

 

信号量就是给某个任务传递一个数值,基本作用是提示接收该信号量的任务什么时候可以执行。

消息邮箱就是由某个任务传递一个指针(内存上指针指向的一片区域的变量类型基本相同)给一个或多个任务。

消息队列就是某个任务传递一堆指针(指针数组,数组中每个指针指向的变量类型可以不同)给一个或多个任务。

 

事件就是发生了一件事情,接下来要触发某种动作。例如,收到了一个信号量或消息队列,或者是定时任务到要触发某种任务要运行。

 

在μC/OS-II中总共有34个,而且每种事件具有的管理函数数目不同。但是所有的事件都有类似的6个函数,它们是所有事件的基本功能,其函数名类似,使用方法也类似,详细函数见下表。


任何一个事件,必须先创建后使用。创建事件是通过调用函数OS???Create()实现的,其中???为事件的类型。创建事件可以在main()函数中,但更多的是在任务初始化部分。使用方法如下:


嵌入式系统中,事件是静态使用的,即创建后永远不删除。但有时候需要动态使用,即根据需要创建和删除事件,此时创建事件就是在任务的事件执行代码中,使用方法如下:


要掌握事件函数在中断服务程序中的调用规则,我们必须清楚中断服务有哪些特点。


下面给出事件在中断服务程序中使用方法,假设Task0任务接收ISR发送的消息,任务代码如下:


注意:

1.中断服务程序一般不会调用建立和删除事件函数,否则要么没有起到事件的作用,要么程序很复杂;

2.中断服务程序不能调用等待事件的函数,否则可能造成程序崩溃,可以调用无等待获得事件函数获得信号,但事实上,在中断中调用无等待获得事件的情况都很少。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

信号量、邮箱、队列与事件 的相关文章

  • Handling error: InvalidRequestException, Missing grant type报错原因之参数写错

    首先 xff0c 检查代码是否写的有问题 如果没有 xff0c 检查postman里面的各项参数 比如俺就是grant type写成了grant type xff08 排错的时候眼睛找瞎 xff09 xff01 xff01 xff01 改过
  • stm32 U盘升级 bootloader程序 基于stm32f407 将升级包下载到U盘中,插入到设备中,完成对主程序的升级

    stm32 U盘升级 bootloader程序 基于stm32f407 将升级包下载到U盘中 xff0c 插入到设备中 xff0c 完成对主程序的升级 xff0c 无需上位机操作 清单 u盘升级的bootloader源码 YID 32206
  • Java代码注释

    注释可以提高程序的可读性 xff0c 注释包含的文字不会对程序产生任何影响 xff0c 在Java中 xff0c 代码注释主要有以下几种 xff1a 1 单行注释 为单行注释标记 xff0c 从 开始到换行为止的所有内容均被注释而被编译器忽
  • [搞机]手机解bl锁后root刷系统

    刷机存在一定风险 xff0c 例如操作失误导致无法开机 软件损坏 设备变砖等 刷机前 xff0c 建议先了解自己手机品牌和型号 技术水平等 xff0c 再进行操作 本文章只是把自己了解的和大伙说说 xff0c 不提供软件下载 xff0c 只
  • 蜂鸣器-第1季第11部分-朱有鹏-专题视频课程

    蜂鸣器 第1季第11部分 1182人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第11个课程 xff0c 主要讲解了无源和有源蜂鸣器的概念和区别 xff0c 蜂鸣器的发声原理 定时器控制蜂鸣器的编程技巧 本节的学习目
  • Linux内核版本介绍与查询

    Linux内核版本命名在不同时期有着不同的规范 xff0c 在涉及到Linux版本问题时经常容易混淆 xff0c 主线版本 xff0f 稳定版 xff0f 长期支持版本经常搞不清楚 xff0c 本文主要记录下内核版本命名的规则以及如何查看L
  • 基于51单片机光照强度检测智能窗帘Proteus仿真

    资料编号 xff1a 163 下面是相关功能视频演示 xff1a 163 基于51单片机光照强度检测智能窗帘Proteus仿真 源码 43 仿真 43 全套资料 功能讲解 xff1a 采用51单片机作为控制CPU xff0c 采用ADC08
  • 双色球小程序

  • 树莓派(3B):启动流程,系统初始化配置,引脚图图示说明

    目录 一 xff0c 树莓派刷机及串口方式登陆 准备工具 操作步骤 二 xff0c 配置树莓派接入网络 树莓派入网 固定树莓派的ip地址 三 xff0c 网络SSH方式登陆树莓派 打开树莓派SSH功能 登陆SSH 四 xff0c 用国内的源
  • 网络安全产品认知——边界防护

    边界防护的安全理念 边界防护 网络边界 具有不同安全级别的网络之间的分界线都可以定义为网络边界 网络边界防护 xff1a 针对不同网络环境所设置的安全防御措施 企业网络常见边界 企业内部网络与外部网络 企业部门之间 gt 业务类型 重要部门
  • python列表

    目录 1 列表 xff08 list 线性表 xff09 2 定义一个列表 1 直接用 2 用list 3 常见的方法 1 append object 向列表尾部追加元素 2 insert index object 向指定位置 xff08
  • kubernetes应用flannel失败

    按照官网给的命令 kubectl apply f https raw githubusercontent com coreos flannel master Documentation kube flannel yml 回头查看k8s的运行
  • 腾讯祭出大招VasSonic,让你的H5页面首屏秒开!

    作者简介 xff1a 陈志兴 xff0c 腾讯SNG增值产品部高级工程师 xff0c 主要负责手Q个性化业务 手Q WebView等项目 喜欢阅读优秀的开源项目 xff0c 听听音乐 xff0c 偶尔也会打打竞技类游戏 本文根据作者在201
  • 直流电机和步进电机-第1季第12部分-朱有鹏-专题视频课程

    直流电机和步进电机 第1季第12部分 1966人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第12个课程 xff0c 主要讲解了直流电机和步进电机 xff0c 其中步进电机是关键 xff0c 通过学习让大家初步掌握步
  • 无需后台接入?带你玩转VasSonic 2.0里的Local Server

    腾讯手Q增值团队于今年8月份正式开源了VasSonic xff0c 一个轻量级高性能的Hybrid框架 VasSonic框架使用并行加载 动态缓存 增量更新等手段 xff0c 实现了终端H5页面的秒开 xff0c 对用户体验的优化做的非常极
  • gcc中的-w -W和-Wall选项

    今天在看一个makefile时看到了gcc W Wall 这句 xff0c 不明其理 xff0c 专门查看了gcc的使用手册 w的意思是关闭编译时的警告 xff0c 也就是编译后不显示任何warning xff0c 因为有时在编译之后编译器
  • VNC Connect使用参数填充VNC配置文件

    VNC Server xff0c VNC Viewer和支持程序由参数控制 xff0c 为大多数用户提供了合适的默认值 您可以通过为参数指定新值来配置程序 xff1a 1 在程序启动之前 2 在启动时在命令行上 3 程序运行时 xff0c
  • arXiv Journal 2021-01-11

    想来想去 xff0c 觉得还是把每次在arXiv上扫过的文章简单记录下来 2021 01 11 hep ph 2 papershep th 2 papershep lat 1 paper hep ph 2 papers Title QCD

随机推荐

  • HJ28 素数伴侣

    描述 题目描述 若两个正整数的和为素数 xff0c 则这两个正整数称之为 素数伴侣 xff0c 如2和5 6和13 xff0c 它们能应用于通信加密 现在密码学会请你设计一个程序 xff0c 从已有的 N xff08 N 为偶数 xff09
  • ZRAM SWAP

    1 ZRAM 1 1 zram的理解 ZRAM xff08 压缩内存 xff09 的意思是说在内存中开辟一块区域压缩数据 就是说假设原来150MB的可用内存现在可以放下180MB的东西 本身不会提高内存容量和运行速度 只是让后台程序更少被系
  • 最简单的神经网络--BP神经网络介绍

    今天从网上看到一篇介绍BP神经网络的文章 xff0c 感觉非常好 xff0c 转载保存 转载地址 xff1a https blog csdn net weixin 40432828 article details 82192709
  • 【没有哪个港口是永远的停留~ 论文解读】SphereFace

    论文 xff1a SphereFace Deep Hypersphere Embedding for Face Recognition 代码 xff1a at https github com wy1iu sphereface 摘要 本文讨
  • 【没有哪个港口是永远的停留~ 论文解读】AM - softmax

    论文 xff1a Additive Margin Softmax for Face Verification 代码 xff1a https github com happynear AMSoftm 相似论文 xff1a CosFace La
  • 串口通信和RS485-第1季第13部分-朱有鹏-专题视频课程

    串口通信和RS485 第1季第13部分 5373人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第13个课程 xff0c 主要讲解了串行通信UART及其扩展RS485 本课程很重要 xff0c 因为串口通信是我们接触的
  • 每天一分钟玩转golang:基础类型之浮点型(二)

    大家好 xff0c 我是加摩斯 xff0c 觉得文章有帮助的小伙伴 xff0c 记得一键三连哟 xff5e 申明 xff1a 本系列两天更新一篇 xff0c 纯原创 xff0c 转载前请与我沟通 Go使用两种浮点型变量来存储小数 xff0c
  • Linux Deploy踩坑指南之二:开启zram块设备

    参考 xff1a https sleeplessbeastie eu 2021 03 17 how to use compressed ram based block devices 当android设备有相对充足的ram xff0c 就可
  • 一文彻底搞懂webpack devtool

    为什么需要Source Map 首先根据谷歌开发者文档的介绍 xff0c Source Map一般与下列类型的预处理器搭配使用 xff1a 转译器 xff08 Babel xff09 编译器 xff08 TypeScript xff09 M
  • DOCKER默认虚拟网卡IP地址与局域网冲突解决

    一 背景 docker启动时默认会创建一个docker0网桥 xff0c 它在内核层连通了其他的物理或虚拟网卡 xff0c 相当于将所有容器和其主机都放到同一个网络 但是部署在内网中的IP段存在有此网段的IP时 xff0c 会导致冲突 xf
  • 学习Hadoop MapReduce与WordCount例子分析

    MapReduce框架一直围绕着key value这样的数据结构 xff0c 下面以官方自带的WordCount为例子 xff0c 自己分析MapReduce的工作机制 MapReduce可以分为Map和Reduce过程 xff0c 代码实
  • mysql GTID主从复制 跳过复制错误

    在mysqlGTID下 xff0c 使用 span class hljs operator span class hljs keyword SET span span class hljs keyword GLOBAL span SQL S
  • 在Ubuntu/Debian Linux系统上检查已经安装软件包的版本

    如果要在Ubuntu Debian Linux操作系统上检查已经安装软件包的版本 xff08 知道Ubuntu Debian系统上可用的软件包版本 xff09 xff0c 可使用apt apt cache aptitude和apt show
  • Ubuntu16.04网络连接正常但浏览器无网络

    ubuntu xff0c google浏览器突然不能上网了 xff0c 经过一番折腾 xff0c 终于解决了问题 xff0c 在此记录一下 开始如下图 xff1a 然而 ping 一下百度 xff0c 是可以 ping 通的 xff0c 说
  • 读书笔记 --《 java核心技术卷一》

    Java核心技术卷 1 第一部分 xff08 java基本介绍 xff09 java特性 简单性 面向对象 分布式 健壮性 安全性 体系结构中立 编译器生成一个体系结构中立的目标文件格式 xff0c 这是一种编译过的代码 xff0c 只要有
  • 关于VNC远程登录ubuntu的各种问题及解决方法

    关于VNC远程登录ubuntu的各种问题及解决方法 2013 04 11 10 42 37 标签 xff1a vnc ubuntu windows d键 全屏 1 系统配置 首先要安装vnc服务器端 sudo apt get install
  • ST-Link 在keil5无法下载程序解决办法

    以前一直在用J Link下载程序 xff0c 由于工作需要 xff0c 换成ST Link下载程序 第一次用ST Link怎么也下载不下去 xff0c 后来差CSDN博客 xff1a https blog csdn net zeroice7
  • 实时时钟DS1302-第1季第14部分-朱有鹏-专题视频课程

    实时时钟DS1302 第1季第14部分 2594人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第14个课程 xff0c 主要讲解了实时时钟DS1302芯片的编程和使用 xff0c 本课程的关键是引入了时序的概念 xf
  • Mac使用npm install报错,需使用sudo

    1 首先说下个人的经历 xff0c 从18年开始实习第一次使用npm xff0c 当时用npm install却总是会报一些错误 xff0c 主要是因为无权限 最初的解决方案自然是使用sudo xff0c 这个是有效的 如果用sudo还不行
  • 信号量、邮箱、队列与事件

    信号量 xff0c 邮箱 xff0c 队列的最大不同在于它们发送的内容不同 信号量是一个触发信号 xff0c 也是一个计数器 xff0c 等待接收信号的任务一般只有接收到信号才可以执行 xff0c 否则任务一直暂停 邮箱是信号量的扩展 xf