1.15 作业

使用计数型信号量设计

2,相关函数的API

一、队列:

1,创建队列函数
osMessageQueueId_t osMessageQueueNew (uint32_t msg_count, uint32_t msg_size,
const osMessageQueueAttr_t *attr);
msg_count : 队列中消息的最大数量,即队列的最大容量。
msg_size : 单个消息的大小(以字节为单位)。
osMessageQueueAttr_t:队列的属性
2,写队列函数
osStatus_t osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr,
uint8_t msg_prio, uint32_t timeout);
mq_id : 目标消息队列的id。
msg_ptr : 指向要发送的消息的指针。
msg_prio : 消息的优先级。
timeout : 超时时间,以毫秒为单位。
返回值类型:osStatus_t(判断是否写入成功)
3, 读队列函数
osStatus_t osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t
*msg_prio, uint32_t timeout);
mq_id : 目标消息队列的id。
msg_ptr : 指向接收消息的指针。
msg_prio : 优先级的指针,可以为 NULL
timeout :超时时间,以毫秒为单位。
返回值类型:osStatus_t(判断是否读取成功)
二、信号量
1,创建信号量
osSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initial_count,
const osSemaphoreAttr_t *attr);
max_count :信号量的最大计数。
initial_count :信号量的初始计数。
2,获取信号量
osStatus_t osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout);
sem_id :信号量的id。
timeout :等待信号量的超时时间。
返回值类型:osStatus_t(判断获取是否成功)
3,释放信号量
osStatus_t osSemaphoreRelease (osSemaphoreId_t semaphore_id);
sem_id :信号量的句柄,通过 osSemaphoreNew 返回。
返回值类型:osStatus_t(判断释放是否成功)
三、互斥量
1,创建互斥量
osMutexId_t osMutexNew(const osMutexAttr_t *attr);

attr :互斥量的属性。

2,获取互斥量
osStatus_t osMutexAcquire(osMutexId_t mutex_id, uint32_t timeout);
mutex_id :要获取的互斥量的id。
timeout :超时时间,通常以毫秒为单位。
3, 释放互斥量
osStatus_t osMutexRelease(osMutexId_t mutex_id);
mutex_id :要释放的互斥量的标识符。
四、事件组
1,创建事件组
osEventFlagsId_t osEventFlagsNew(const osEventFlagsAttr_t *attr);
attr :事件标志组的属性。
2,设置事件组
uint32_t osEventFlagsSet(osEventFlagsId_t ef_id, uint32_t flags)
ef_id :事件标志组的id
flags :要设置的事件标志位,可以使用按位或操作符 | 设置多个标志位。
2,等待事件组
uint32_t osEventFlagsWait(osEventFlagsId_t ef_id, uint32_t flags, uint32_t
options, uint32_t timeout);
ef_id :事件标志组的id
flags :要等待的事件标志位,可以使用按位或操作符 | 等待多个标志位。
options :等待标志的个数
timeout :等待的超时时间,单位是毫秒。

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

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

相关文章

并发编程之阻塞队列

目录 什么是队列? Queue接口 阻塞队列 应用场景 ArrayBlockingQueue ArrayBlockingQueue使用 ArrayBlockingQueue的原理 数据结构 入队put方法 出队take方法 LinkedBlockingQueue LinkedBlockingQueue使用 LinkedBlockingQueue原理 数据结构 入队put方…

vtk qt切割stl模型

一直想实现对stl模型的某个方向进行平面切割 通过滑动slider然后对模型进行某一个方向的面切割。同时可以用鼠标对模型进行移动缩放,旋转等操作。然后可以加一些颜色点云显示等操作。 stl加载: QString selectFilePath QFileDialog::getOpenFileName…

JS遍历对象的方法及特点

1、定义一个对象 let obj {name: Tom,age: 20,sex: 男,};obj.weight 70kg;// obj的原型上定义属性Object.prototype.height 180cm;Object.prototype.major function() {console.log(专业:计算机应用技术);};console.log(obj, obj); 控制台输出的obj中&#xff…

Java_线程安全

一、多线程常用方法 下面我们演示一下getName()、setName(String name)、currentThread()、sleep(long time)这些方法的使用效果。 public class MyThread extends Thread{public MyThread(String name){super(name); //1.执行父类Thread(String name)构造器,为当前…

通过DTS实现PG14迁移到人大金仓V8R6

迁移需求 xxx项目适配人大金仓,测试环境195pgsql数据库需要进行迁移至192.168.3.29 人大金仓数据库; 数据库信息 ip os登录账号密码 数据库类型 数据库端口 数据库 数据库用户密码 源库 192.168.3.15 root/123456 PG14.2 5432 ahtjtestnew …

【数据结构】排序之归并排序与计数排序

个人主页 : zxctsclrjjjcph 文章封面来自:艺术家–贤海林 如有转载请先通知 目录 1. 前言2. 归并排序2.1 递归实现2.1.1 分析2.1.2 代码实现 2.2 非递归实现2.2.1 分析2.2.2 代码实现 3. 计数排序3.1 分析3.2 代码实现 4. 附代码4.1 Sort.h4.2 Sort.c4.3…

centos7系统 gdb调试jdk11源码

centos7 gdb调试jdk11源码 ##首先你得编译一个debug版本的jdk11。教程centos7下openjdk11源码下载编译安装_openjdk11下载-CSDN博客 ##gdb 启动java进程 设置运行参数、设置断点 运行、调试进入main断点 gdb /home/yym/code/jdk11u-master/build/linux-x86_64-normal-serve…

Batch Normalization、Layer Normalization代码实现

目录 前言批量正则化-BN层正则化-LN 前言 BN(Batch Normalization)首次提出与论文,主要目的是为了解决训练深层神经网络慢的问题。我们可以神经网络整体可以看成一个高阶的复杂函数,通过训练优化它的参数,可以用于拟合各种复杂的数据分布。一…

营销与经营一体,巨量引擎如何激发生意新未来?

12月6日,在第九届GDMS全球数字营销峰会上,巨量引擎发表了《营销经营一体,激发生意新未来》为主题的演讲,分享了巨量引擎如何在营销与经营一体化的背景下,通过极致的产品技术创新,激发生意新未来。 激发全渠…

ClientHttpRequestInterceptor报错Timeout waiting for connection from pool

restTemplate实现ClientHttpRequestInterceptor,报错org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool 代码如下: Configuration public class HttpConfig {private static final Integer RETRY_COUNT…

0基础学java-day26(满汉楼实战)

一、界面设计 1. 需求说明 2 界面设计 2.1 用户登录 2.2 显示餐桌状态 2.3 预订 2.4 显示菜品 2.5 点餐 2.6 查看账单 2.7 结账 3 分层设计 二、功能实现 1 工具类 1.1 构建如下的项目结构 1.2 导入相关的工具类和jar包 相关的工具类和jar包会放在评论区的百度网盘的链接…

VBA之Excel应用第五节:录制宏时,使用绝对引用和相对引用

《VBA之Excel应用》(版权10178983)是非常经典的,是我推出的第七套教程,定位于初级,目前是第一版修订。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可…

基于JAVA+ssm开发的在线报名系统设计与实现【附源码】

基于JAVAssm开发的在线报名系统设计与实现【附源码】 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统 …

vue使用i18n实现国际化

安装 npm install vue-i18nnext在src下创建一个名为i18n的文件夹,并按照下图创建需要的文件 i18n/locales/en.json {"common": {"BUTTON_OK": "OK","BUTTON_CANCEL": "Cancel","BUTTON_SUBMIT": "Submit…

linux后台进程的总结

文章目录 方案1 nohup &方案2 screen 方案1 nohup & 1、单独使用 nohup 执行脚本,如下图所示,终端会被接管,就是标准输入stdin 被关闭了,使用ctrlc会导致终止执行,但是可以关闭这个终端,重新打开终…

二叉树题目:从前序与后序遍历序列构造二叉树

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:从前序与后序遍历序列构造二叉树 出处:889. 从前序与后序遍历序列构造二叉树 难度 7 级 题目描述…

react项目运行卡在编译:您当前运行的TypeScript版本不受@TypeScript eslint/TypeScript estree的官方支持

1.问题 错误信息具体如下: 搜索了一下,是typescript版本的问题,提示我版本需要在3.3.0和4.5.0中间,我查看了package.json,显示版本为4.1.3,然后一直给我提示我的版本是4.9.5,全局搜索一下&…

FPGA——时序分析与约束(Quartus II)

FPGA时序分析与约束 FPGA结构基础数据传输模型Quartus II 时序报告Quartus II 中TimeQuest的操作实操 时序分析:通过分析FPGA内部各个存储器之间的数据和时钟传输路径,来分析数据延迟和时钟延迟的关系,保证所有寄存器都可以正确寄存数据。 数…

Ubuntu配置NFS客户端和服务端详解——手把手配置

Ubuntu配置NFS客户端和服务端 如果您想实现远程访问并修改 ROS 主机中 Ubuntu 上的文件,可以通过 NFS挂载的方式。虚拟机上的 Ubuntu 系统可以通过 NFS 的方式来访问 ROS 主机中Ubuntu 系统的文件,NFS 分为服务器挂载和客户端访问。这里虚拟机上的 Ubun…