⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 umc_automatic_mutex.h

📁 audio-video-codecs.rar语音编解码器
💻 H
字号:
/*
//
//              INTEL CORPORATION PROPRIETARY INFORMATION
//  This software is supplied under the terms of a license  agreement or
//  nondisclosure agreement with Intel Corporation and may not be copied
//  or disclosed except in  accordance  with the terms of that agreement.
//    Copyright (c) 2003-2006 Intel Corporation. All Rights Reserved.
//
//
*/

#ifndef __UMC_AUTOMATIC_MUTEX_H__
#define __UMC_AUTOMATIC_MUTEX_H__

#include "vm_mutex.h"

namespace UMC
{

#pragma pack(1)

class AutomaticMutex
{
public:
    // Constructor
    AutomaticMutex(vm_mutex &mutex)
    {
        if (vm_mutex_is_valid(&mutex))
        {
            m_pMutex = &mutex;

            // lock mutex
            vm_mutex_lock(m_pMutex);
            m_bLocked = true;
        }
        else
        {
            m_pMutex = NULL;
            m_bLocked = false;
        }
    }

    // Destructor
    ~AutomaticMutex(void)
    {
        Unlock();
    }

    // lock mutex again
    void Lock(void)
    {
        if (m_pMutex)
        {
            if ((vm_mutex_is_valid(m_pMutex)) && (false == m_bLocked))
            {
                vm_mutex_lock(m_pMutex);
                m_bLocked = true;
            }
        }
    }

    // Unlock mutex
    void Unlock(void)
    {
        if (m_pMutex)
        {
            if ((vm_mutex_is_valid(m_pMutex)) && (m_bLocked))
            {
                vm_mutex_unlock(m_pMutex);
                m_bLocked = false;
            }
        }
    }

protected:
    vm_mutex *m_pMutex;                                         // (vm_mutex *) pointer to using mutex
    bool m_bLocked;                                             // (bool) mutex is own locked
};

#pragma pack()

} // end namespace UMC

#endif // __UMC_AUTOMATIC_MUTEX_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -