下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

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

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

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


FreeRTOS 递归互斥锁

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

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

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

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

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

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





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