cMutex.h
00001
00002
00003
00004
00005 #ifndef CAUDIOMUTEX_H
00006 #define CAUDIOMUTEX_H
00007
00008 #include "../include/cAudioDefines.h"
00009
00010 #ifdef CAUDIO_MAKE_THREAD_SAFE
00011 #ifdef CAUDIO_PLATFORM_WIN
00012 #include <windows.h>
00013 #else
00014 #include <pthread.h>
00015 #endif
00016 #endif
00017
00018 namespace cAudio
00019 {
00020 #ifdef CAUDIO_MAKE_THREAD_SAFE
00022 class cAudioMutex
00023 {
00024 public:
00025 cAudioMutex();
00026 ~cAudioMutex();
00027
00028 void lock();
00029 void unlock();
00030 private:
00031 void initialize();
00032 #ifdef CAUDIO_PLATFORM_WIN
00033 CRITICAL_SECTION criticalSection;
00034 #else
00035 pthread_mutex_t Mutex;
00036 #endif
00037 bool Initialized;
00038 };
00039 #else
00040
00041 class cAudioMutex
00042 {
00043 public:
00044 cAudioMutex();
00045 ~cAudioMutex();
00046
00047 void lock();
00048 void unlock();
00049 private:
00050 void initialize();
00051 bool Initialized;
00052 };
00053 #endif
00054
00055 class cAudioMutexBasicLock
00056 {
00057 public:
00058 cAudioMutexBasicLock(cAudioMutex& mutex) : Mutex(&mutex)
00059 {
00060 Mutex->lock();
00061 }
00062 ~cAudioMutexBasicLock()
00063 {
00064 Mutex->unlock();
00065 }
00066 protected:
00067 cAudioMutex* Mutex;
00068 };
00069 };
00070
00071 #endif