critsec.h
资源名称:MF.zip [点击查看]
上传用户:geng8029
上传日期:2021-01-30
资源大小:187k
文件大小:2k
源码类别:
Audio
开发平台:
Visual C++
- #pragma once
- namespace MediaFoundationSamples
- {
- //////////////////////////////////////////////////////////////////////////
- // CritSec
- // Description: Wraps a critical section.
- //////////////////////////////////////////////////////////////////////////
- class CritSec
- {
- private:
- CRITICAL_SECTION m_criticalSection;
- public:
- CritSec()
- {
- InitializeCriticalSection(&m_criticalSection);
- }
- ~CritSec()
- {
- DeleteCriticalSection(&m_criticalSection);
- }
- void Lock()
- {
- EnterCriticalSection(&m_criticalSection);
- }
- void Unlock()
- {
- LeaveCriticalSection(&m_criticalSection);
- }
- };
- //////////////////////////////////////////////////////////////////////////
- // AutoLock
- // Description: Provides automatic locking and unlocking of a
- // of a critical section.
- //
- // Note: The AutoLock object must go out of scope before the CritSec.
- //////////////////////////////////////////////////////////////////////////
- class AutoLock
- {
- private:
- CritSec *m_pCriticalSection;
- public:
- AutoLock(CritSec& crit)
- {
- m_pCriticalSection = &crit;
- m_pCriticalSection->Lock();
- }
- ~AutoLock()
- {
- m_pCriticalSection->Unlock();
- }
- };
- }; // namespace MediaFoundationSamples
English
