00001 00002 // 00003 // AkLock.h 00004 // 00005 // AudioKinetic Lock class 00006 // 00007 // Copyright (c) 2006 Audiokinetic Inc. / All Rights Reserved 00008 // 00010 00011 #ifndef _AKLOCK_H_ 00012 #define _AKLOCK_H_ 00013 00014 #include <AK/SoundEngine/Common/AkTypes.h> 00015 #include <windows.h> //For CRITICAL_SECTION 00016 00017 //----------------------------------------------------------------------------- 00018 // CAkLock class 00019 //----------------------------------------------------------------------------- 00020 class CAkLock 00021 { 00022 public: 00024 CAkLock() 00025 { 00026 #ifdef AK_USE_METRO_API 00027 ::InitializeCriticalSectionEx( &m_csLock, 0, 0 ); 00028 #else 00029 ::InitializeCriticalSection( &m_csLock ); 00030 #endif 00031 } 00032 00034 ~CAkLock() 00035 { 00036 ::DeleteCriticalSection( &m_csLock ); 00037 } 00038 00040 inline AKRESULT Lock( void ) 00041 { 00042 ::EnterCriticalSection( &m_csLock ); 00043 return AK_Success; 00044 } 00045 00047 inline AKRESULT Unlock( void ) 00048 { 00049 ::LeaveCriticalSection( &m_csLock ); 00050 return AK_Success; 00051 } 00052 00053 /* // Returns AK_Success if lock aquired, AK_Fail otherwise. 00054 inline AKRESULT Trylock( void ) 00055 { 00056 if ( ::TryEnterCriticalSection( &m_csLock ) ) 00057 return AK_Success; 00058 return AK_Fail; 00059 } */ 00060 00061 private: 00062 CRITICAL_SECTION m_csLock; 00063 }; 00064 00065 #endif // _AKLOCK_H_
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요