Communication Model

互斥锁(Mutex)

互斥锁用于保护共享资源,确保同一时刻只有一个任务能够访问临界区, 从而避免多任务竞争导致的数据异常。

机制定义

Mutex = 获取锁 + 独占访问 + 释放锁 + 任务同步

Mutex 是 HRTOS 同步模型(Synchronization Mechanism)中的核心组件,用于实现对共享资源的互斥访问控制。

所属同步模型

Communication Model

通信模型体系

Synchronization Model

Mutex 属于任务同步机制,用于解决资源竞争问题。

触发条件

互斥锁通常用于以下场景:

共享变量访问

多个任务同时读写同一资源。

外设独占控制

串口、SPI、I2C 等资源保护。

临界区保护

避免并发修改关键数据。

任务同步控制

协调多个任务访问顺序。

执行流程

1. 初始化互斥锁

创建锁资源。

2. 任务申请锁

进入共享资源访问阶段。

3. 独占执行临界区

执行受保护代码。

4. 释放互斥锁

允许其他任务访问。

5. 系统恢复调度

继续任务切换与运行。

演示代码


#include <HRTOS.H>
#include <HRTOS_KERNEL.H>

void task1(void)
{
  os_lock_init();  
  while(1)
    {
        os_mutex_init();
        os_mutex_lock();
        os_mutex_unlock();
        os_wait1(5);
    }
}

void task2(void)
{
    while(1)
    {
        os_wait1(5);
    }
}

void main(void)
{
    os_task((unsigned int)task1, 0, 3, 0);
    os_task((unsigned int)task2, 1, 2, 0);

    os_task_release(0);

    while(1)
    {
        os_nop();
    }
}
    

API 参考

互斥锁初始化

os_mutex_init()

Mutex vs Semaphore

Mutex

用于互斥访问资源,具有所有权概念。

Semaphore

用于计数资源或同步,不具备严格所有权。

系统意义

互斥锁是RTOS中最基础的同步机制之一, 用于保证共享资源访问安全并降低竞争条件风险。

相关导航

通信模型

Communication Model

调度系统

Scheduling Engine

中断机制

Interrupt Flow

任务生命周期

Task Lifecycle