c/c++互斥锁

ResLock.h

#ifndef _RESLOCK_H_
#define _RESLOCK_H_

#ifdef _MSC_VER
    #include <windows.h>
#else
    #include <pthread.h>
#endif

/**
 * @class ResLock
 * 
 * @brief lock for reading/writing shared resource in multi-threads
 *
 * @version V1.0 2021-08-23
 *
 * @author zhangb
 *
 * @copyright (C) 2010 EETRUST Technology Co., Ltd.
 *
 */

class ResLock
{
public:

    //创建锁
    ResLock();

    //销毁锁
    ~ResLock();

    //锁定
    void lock();

    //解锁
    void unlock();

//private:

#ifdef _MSC_VER
    CRITICAL_SECTION m_cs;
#else
    pthread_mutex_t m_cs;
    pthread_cond_t m_pthreadCond;
#endif
    
};

#endif

ResLock.cpp


#include "ResLock.h"

ResLock::ResLock()
{
#ifdef _MSC_VER
    InitializeCriticalSection(&m_cs);
#else
    pthread_mutex_init(&m_cs, NULL);
    m_pthreadCond = PTHREAD_COND_INITIALIZER;
#endif
}

ResLock::~ResLock()
{
#ifdef _MSC_VER
    DeleteCriticalSection(&m_cs);
#else
    pthread_mutex_destroy(&m_cs);
    pthread_cond_destroy(&m_pthreadCond);
#endif
}

void ResLock::lock()
{
#ifdef _MSC_VER
    EnterCriticalSection(&m_cs);
#else
    pthread_mutex_lock(&m_cs);
#endif
}

void ResLock::unlock()
{
#ifdef _MSC_VER
    LeaveCriticalSection(&m_cs);
#else
    pthread_mutex_unlock(&m_cs);
#endif
}
 

猜你喜欢

转载自blog.csdn.net/struborn_b/article/details/119868758