下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

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

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

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

FreeRTOS 教程书籍 提供更多信息,包括队列、二进制信号量量、互斥锁、计数信号量、 信号量和递归信号量的更多信息,并在示例项目中随附多个简单示例。

FreeRTOS 互斥锁

互斥锁是包含优先级继承机制的二进制信号量。 二进制信号量 能更好实现实现同步(任务间或任务与中断之间), 而互斥锁有助于更好实现简单互斥(即相互排斥)。

用于互斥时, 互斥锁就像用于保护资源的令牌。 任务希望访问资源时,必须首先 获取 ('take') 令牌。 使用资源后,必须“返回”令牌,这样其他任务就有机会访问 相同的资源。

互斥锁使用相同的信号量访问 API 函数,因此也能指定模块时间。 阻塞时间表示如果互斥锁不是立即可用, 则在尝试“获取”互斥锁时任务应进入阻塞状态的最大“滴答”数。 然而,与二进制信号量不同 互斥锁采用优先继承。 这意味着,如果高优先级任务在尝试获取当前由较低优先级任务持有的互斥锁(令牌)时阻塞, 则持有令牌的任务的优先级会暂时提高到阻塞任务的优先级。 这一机制 旨在确保较高优先级的任务保持阻塞状态的时间尽可能短, 从而最大限度地减少已经发生的“优先级反转”现象。

优先级继承无法解决优先级反转! 只是在某些情况下将影响降至最低。 硬实时应用程序的设计应首先 确保不会发生优先级反转。

不应在中断中使用互斥锁,因为:

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

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


使用互斥锁来保护对共享资源的访问。





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