下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
FreeRTOS-Plus-TCP 现具有统一的 IPv4 和 IPv6 功能,支持多接口。
为基于 FreeRTOS 的固件实现防砖化 MCU FOTA:
宣布停止支持 FreeRTOS 202012 LTS。
FreeRTOS 网站现已提供简体中文版本
新的 FreeRTOS Long Term Support 版本现已发布。

FreeRTOS 递归互斥锁
[任务间通信和同步]

[另请参阅阻塞多个 RTOS 对象]

FreeRTOS 教程书籍 提供更多信息,包括队列、二进制信号量量、互斥锁、计数信号量、 递归信号量,以及包含在配套的示例项目中的简单示例。


FreeRTOS 递归互斥锁

用户可对一把递归互斥锁重复加锁。只有用户 为每个成功的 xSemaphoreTakeRecursive() 请求调用 xSemaphoreGiveRecursive() 后,互斥锁才会重新变为可用。例如,如果一个任务成功“加锁”相同的互斥锁 5 次, 那么任何其他任务都无法使用此互斥锁,直到任务也把这个互斥锁“解锁”5 次。

这种类型的信号量使用优先级继承机制,因此“加锁”一个信号量的任务必须在不需要此信号量时, 立即将信号量“解锁”。

不能从中断服务程序中使用类型是互斥锁的信号量。

不能从中断中使用互斥锁的原因是:

  • 互斥锁使用的优先级继承机制要求 从任务中(而不是从中断中)拿走和放入互斥锁。

  • 中断无法保持阻塞来等待一个被互斥锁保护的资源 变得可用。





Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.