怎么开发一个网络协议模块(C语言框架)之(四) 信号量初始化

// 原始代码
/* gVrrpInstance.sem = OsixCreateBSem(OSIX_SEM_Q_PRIORITY, OSIX_SEM_FULL); */
gVrrpInstance.sem = OsixCreateMSem(OSIX_SEM_Q_FIFO | OSIX_SEM_DELETE_SAFE);
if (gVrrpInstance.sem == NULL)
{printf("[VRRP]:vrrp init error, failed to create vrrp global sem.\r\n");goto ERROR_RETURN;
}

🚦 一、信号量作用

信号量用于:

  • 控制多线程/中断对共享资源的访问

  • VRRP 模块可能有多个线程:

    • 定时器线程

    • socket 接收线程

    • CLI 或配置下发线程

  • 全局变量(如 gVrrpInstance.operUsedTblavl树)是共享资源,需加锁防止竞态条件。


二、OsixCreateMSem 是什么?

这是平台层 OS 适配接口的

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

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

相关文章

电脑C盘清理技巧:释放空间,提升性能

文章目录 一、使用系统自带的磁盘清理工具(一)打开磁盘清理工具(二)清理临时文件(三)清理系统文件 二、使用第三方清理工具(一)CCleaner(极力推荐)&#xff0…

ARM笔记-ARM处理器及系统结构

第二章 ARM处理器及系统结构 2.1 ARM处理器简介 采用RISC架构的ARM微处理器的特点: 体积小、功耗低、低成本、高性能;支持 Thumb(16位)/ARM(32位)双指令集,能很好地兼容 8位/16位 器件&#x…

关于如何在Springboot项目中通过excel批量导入数据

接口文档 2.5 批量导入学生账号 2.5.1 基本信息 请求路径:/admin/students/batch-import 请求方式:POST 接口描述:通过上传Excel文件批量导入学生账号信息。 2.5.2 请求参数 参数格式:multipart/form-data 参数说明: 参数名称参数类型是否必须备注filefile是包含学…

【TypeScript】知识点梳理(四)

#没事去翻翻官网文档,其实有很多用法是我们还不知道的,官方资料总是最权威的,也推荐大家无聊看看各个官网hhh,不一定是记忆,但在某种场景下我们或许能想到还有多一种解决方式# noImplicitAny 当我们没有表明类型时&…

Python匿名函数(lambda)全面详解

文章目录 Python匿名函数(lambda)全面详解一、lambda函数基础1. 什么是lambda函数?2. lambda函数语法3. 与普通函数的区别 二、lambda函数使用场景1. 作为函数参数2. 在数据结构中使用3. 作为返回值4. 立即调用(IIFE) 三、lambda函数高级用法1. 多参数lambda2. 条件…

Qt Widgets模块功能详细说明,基本控件:QCheckBox(三)

一、基本控件(Widgets) Qt 提供了丰富的基本控件,如按钮、标签、文本框、复选框、单选按钮、列表框、组合框、菜单、工具栏等。 1、QCheckBox 1.1、概述 (用途、状态、继承关系) QCheckBox 是 Qt 框架中的复选框控件,用于表示二…

HarmonyOS 鸿蒙应用开发基础:转换整个PDF文档为图片功能

在许多应用场景中,将PDF文档的每一页转换为单独的图片文件是非常有帮助的。这可以用于文档的分享、扫描文档的电子化存档、或者进行进一步的文字识别处理等。本文将介绍如何使用华为HarmonyOS提供的PDF处理服务将整个PDF文档转换为图片,并将这些图片存放…

【算法】: 前缀和算法(利用o(1)的时间复杂度快速求区间和)

前缀和算法:高效处理区间求和的利器 目录 引言什么是前缀和前缀和的基本实现前缀和的作用前缀和的典型应用场景前缀和的优缺点分析实战例题解析 引言 区间求和问题的普遍性暴力解法的时间复杂度问题前缀和算法的核心思想 什么是前缀和 前缀和的数学定义 通俗来…

NDVI谐波拟合(基于GEE实现)

在遥感影像中,我们常用 NDVI(归一化植被指数)来衡量地表植被的绿度。它简单直观,是生态监测、农情分析的基础工具。但你是否注意到: NDVI 虽然“绿”,却常常“乱”。 因为云层、观测频率、天气干扰&#xf…

基于Python+YOLO模型的手势识别系统

本项目是一个基于Python、YOLO模型、PyQt5的实时手势识别系统,通过摄像头或导入图片、视频,能够实时识别并分类不同的手势动作。系统采用训练好的深度学习模型进行手势检测和识别,可应用于人机交互、智能控制等多种场景。 1、系统主要功能包…

黑马点评--短信登录实现

短信登录 导入黑马点评项目 导入资料中提供的SQL文件 其中的核心表有: tb_user :用户表 tb_user_info :用户详情表 tb_shop:用户信息表 tb_shop_type:商户类型表 tb_blog:用户日记表(达人…

AWS EC2实例安全远程访问最佳实践

EC2 远程连接方案对比 远程访问 Amazon EC2 实例主要有以下四种方式: Secure Shell (SSH) 远程访问AWS Systems Manager 会话管理器适用于 Linux 实例的 EC2 Serial ConsoleAmazon EC2 Instance Connect SSH 远程访问 SSH(Secure Shell)广…

Idea如果有参数,怎么debug

如上图,输入输出路径是需要运行的时候给参数。 那么 FileInputFormat.setInputPaths(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); 给上面的代码给参数的步骤为 1.在类名或者方法名上右键,选择More Run/Debug…

Oracle Apps R12——报表入门2:单表——报表开发流程

☆开发思路 开发表报代码流程中有几个重要的组件和重要的知识点需要搞懂,才能得心应手。报表通常是通过表格的形式来存在的,我们一般在开发代码的时候在【输出】中打印HTML,Css格式的表格,并把查询到的数据插入其中,即可完成一个报…

Servlet的继承关系和生命周期

1.继承关系: javax.servlet.Servlet接口->javax.servlet.GenericServlet抽象类 ->javax.servlet.http.HttpServlet抽象子类 2.相关方法: javax.servlet.Servlet: (1)void init(config) -初始化方法 &…

PEFT库PromptTuningConfig 配置

PEFT库 PromptTuningConfig 配置 "Prompt Tuning"的参数高效微调 PromptTuningConfig 核心参数解析 1. task_type="CAUSAL_LM" 作用:指定任务类型为因果语言模型(Causal LM)。说明:因果语言模型从左到右生成文本(如GPT系列),这与任务需求匹配(模…

【438. 找到字符串中所有字母异位词】

Leetcode算法练习 笔记记录 438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 思路就是我们要找和p相同的词,可以先排个序,每次取一个和p的size长度相同的窗口去滑动,符合就记录,不符合继续滑动。 public List&l…

React Hooks底层执行逻辑详解、自定义Hooks、FiberScheduler

React Hooks底层执行逻辑详解 React Hooks 在表面上看像普通的函数调用,背后却隐藏着一套复杂而高效的运行时机制。要理解 React Hooks 的底层执行逻辑,需要从 React 如何管理组件的状态与副作用入手。 🧠 一、React 为什么引入 Hooks&#…

Windows命令实用工具——tcping 命令工具安装及基础使用

Windows命令实用工具——tcping 命令工具安装及使用 一、tcping 命令简介二、tcping 的安装1、tcping 官网下载安装包2、将软件包复制到 Windws 系统的 System32 目录下面3、查看 tcping 命令是否安装成功 三、tcping 工具简单使用方法 一、tcping 命令简介 tcping 的主要功能…

智慧化工园区安全风险管控平台建设方案(Word)

1 项目概况 1.1 园区概况 1.1.1 XX化工园区简况 1.1.2 企业现状 1.1.3 园区发展方向 1.1.4 园区信息化现状 1.2 项目建设背景 1.2.1 政策背景 1.3 项目建设需求分析 1.3.1 政策需求分析 1.3.2 安全生产监管需求分析 1.3.3 应急协同管理需求分析 1.3.4 工业互联网安…