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

FreeRTOS同步和互斥机制以及相关API

FreeRTOS 提供了多种 同步(Synchronization)互斥(Mutex) 机制,以确保多任务环境下数据的安全访问和任务间的协调执行。以下是主要机制及其 API 的详细说明:


1. 互斥机制(Mutex)

用于保护共享资源,防止多个任务同时访问,避免数据竞争。

1.1 标准互斥量(Mutex)

  • 特点
    • 支持 优先级继承(Priority Inheritance),防止优先级反转问题。
    • 同一任务 不能 递归获取(重复获取会导致死锁)。
  • API
    // 创建互斥量(初始状态为可用)
    SemaphoreHandle_t xSemaphoreCreateMutex(void);
    
    // 获取互斥量(阻塞)
    BaseType_t xSemaphoreTake(SemaphoreHandle_t xMutex, TickType_t xBlockTime);
    
    // 释放互斥量
    BaseType_t xSemaphoreGive(SemaphoreHandle_t xMutex);
    

1.2 递归互斥量(Recursive Mutex)

  • 特点
    • 允许 同一任务多次获取,必须对应相同次数的释放。
    • 适用于函数递归调用或嵌套访问共享资源的情况。
  • API
    // 创建递归互斥量
    SemaphoreHandle_t xSemaphoreCreateRecursiveMutex(void);
    
    // 递归获取互斥量
    BaseType_t xSemaphoreTakeRecursive(SemaphoreHandle_t xMutex, TickType_t xBlockTime);
    
    // 递归释放互斥量
    BaseType_t xSemaphoreGiveRecursive(SemaphoreHandle_t xMutex

相关文章:

  • 【开源】Unity 商业级引擎源码加密混淆过马甲包 Il2cpp global-metadata加密方案 Android加固IOS加固
  • Windows修改hosts文件让向日癸软件联网
  • 从开发到上线:基于 Linux 云服务器的前后端分离项目部署实践(Vue + Node.js)
  • 什么是市盈率,通俗解释清楚
  • CAN/FD CAN总线配置 最新详解 包含理论+实战(附带源码)
  • 《JVM考古现场(十六):太初奇点——从普朗克常量到宇宙弦的编译风暴》
  • matlab从pytorch中导入LeNet-5网络框架
  • 数论4 组合数
  • Java全栈面试宝典:线程安全机制与Spring Boot核心原理深度解析
  • 游戏引擎学习第202天
  • 面试算法高频01
  • PostgreSQL有回收站吗?
  • 大语言模型应用和训练(人工智能)
  • STL容器中不进行前置条件检查有可能导致不安全的操作
  • 工程画图-UML类图 组合和聚合
  • SDK中窗口调用
  • 什么是Stop The World
  • Apifox app的用法作用
  • Linux开发工具——apt
  • 从0到神谕:GPT系列的进化狂想曲——用AI之眼见证人类语言的终极形态
  • 怎么帮公司做网站建设/电商网站设计模板
  • 网站建设网站维护/搜狗广告联盟
  • 个人品牌网站设计/互联网金融营销案例
  • 免费做初级会计试题网站有哪些/企业宣传推广方案
  • 小型便利店装修设计/安卓优化大师旧版
  • 如东网站建设/网络营销策划书应该怎么写