临界区

// 头文件

class CCriticalSection
{
private:

    /// OS-specific critical section object

    CRITICAL_SECTION section;

public:

    /// construction

    CCriticalSection(void);

    /// destruction

    ~CCriticalSection(void);

    /// Acquire the mutex, i.e. enter the critical section

    void Acquire();

    /// Release the mutex, i.e. leave the critical section

    void Release();
};

// Mutex functionality

__forceinline void CCriticalSection::Acquire()
{
    EnterCriticalSection (&section);
}

__forceinline void CCriticalSection::Release()
{
    LeaveCriticalSection (&section);
}

/**
* RAII lock class for \ref CCriticalSection mutexes.
*/

class CCriticalSectionLock
{
private:

    CCriticalSection& section;

public:

    __forceinline CCriticalSectionLock (CCriticalSection& section)
        : section (section)
    {
        section.Acquire();
    }

    __forceinline ~CCriticalSectionLock()
    {
        section.Release();
    }
};

 

 

// 源文件

CCriticalSection::CCriticalSection(void)
{
    InitializeCriticalSectionAndSpinCount (&section, 5000);
}

CCriticalSection::~CCriticalSection(void)
{
    DeleteCriticalSection (&section);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值