/**************************************************************************//**
 * @item     CosyOS-III 例程（服务应用）
 * @file     mutexc_mutex.c
 * @brief    互斥访问_互斥信号量
 * @details  通过互斥信号量的{获取<-归还}，实现在任务中对任务级公共资源的互斥访问。
 * @note     可实现超时处理机制。
 * @author   迟凯峰
 * @version  V1.0.0
 * @date     2026.07.31
 ******************************************************************************/

#if 0 /* 编译开关 */

#include "CosyOS.H"

uCreateMut(mut_0); // 创建互斥信号量

/* task_1 */
uCreateTask(task_1, 1, 384, 0, 0)
{
    while(1){
        if(uTakeMut(mut_0, xTick_ms(500))){ // 如果超时时间为~0，不再支持超时处理
            /* 互斥访问 任务级公共资源 开始 */
            
            /* 互斥访问 任务级公共资源 结束 */
            uBackMut(mut_0);
        }
        else{
            /* 超时处理 开始 */
            
            /* 超时处理 结束 */
        }
    }
}

/* task_2 */
uCreateTask(task_2, 2, 384, 0, 0)
{
    while(1){
        if(uTakeMut(mut_0, xTick_ms(500))){ // 如果超时时间为~0，不再支持超时处理
            /* 互斥访问 任务级公共资源 开始 */
            
            /* 互斥访问 任务级公共资源 结束 */
            uBackMut(mut_0);
        }
        else{
            /* 超时处理 开始 */
            
            /* 超时处理 结束 */
        }
    }
}

/* 启动钩子 */
void start_hook(void)
{
    uStartTask_Ready(task_1); // 启动task_1，初始状态为就绪状态
    uStartTask_Ready(task_2); // 启动task_2，初始状态为就绪状态
}

#endif
