梅克尔工作室-鸿蒙14天IOT开发实战-笔记(3.5)

发布于 2022-7-31 10:10
浏览
0收藏

3.5 内核开发之互斥锁

(1)互斥锁基本概念

  1. 互斥锁又称互斥型信号量,是一种特殊的二值性信号量,用于实现对共享资源的独占式处理。
  2. 任意时刻互斥锁的状态只有两种:开锁或闭锁。
  3. 当有任务持有时,互斥锁处于闭锁状态,这个任务获得该互斥锁的所有权。
  4. 当该任务释放时,该互斥锁被开锁,任务失去该互斥锁的所有权。
  5. 当一个任务持有互斥锁时,其他任务将不能再对该互斥锁进行开锁或持有。
  6. 多任务环境下往往存在多个任务竞争同一共享资源的应用场景,互斥锁可被用于对共享资源的保护从而实现独占式访问。另外,互斥锁可以解决信号量存在的优先级翻转问题。
    LiteOS提供的互斥锁具有如下特点:
    通过优先级继承算法,解决优先级翻转问题。

(2)互斥锁运作机制

多任务环境下会存在多个任务访问同一公共资源的场景,而有些公共资源是非共享的,需要任务进行独占式处理。互斥锁怎样来避免这种冲突呢?


用互斥锁处理非共享资源的同步访问时,如果有任务访问该资源,则互斥锁为加锁状态。此时其他任务如果想访问这个公共资源则会被阻塞,直到互斥锁被持有该锁的任务释放后,其他任务才能重新访问该公共资源,此时互斥锁再次上锁,如此确保同一时刻只有一个任务正在访问这个公共资源,保证了公共资源操作的完整性。
梅克尔工作室-鸿蒙14天IOT开发实战-笔记(3.5)-开源基础软件社区

(3)cmsis_os2的API互斥锁接口简介

梅克尔工作室-鸿蒙14天IOT开发实战-笔记(3.5)-开源基础软件社区
(4)互斥锁使用
梅克尔工作室-鸿蒙14天IOT开发实战-笔记(3.5)-开源基础软件社区
梅克尔工作室-鸿蒙14天IOT开发实战-笔记(3.5)-开源基础软件社区
梅克尔工作室-鸿蒙14天IOT开发实战-笔记(3.5)-开源基础软件社区

收藏
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐