cMutex.cpp
00001
00002
00003
00004
00005 #include "../Headers/cMutex.h"
00006
00007 namespace cAudio
00008 {
00009 #ifdef CAUDIO_MAKE_THREAD_SAFE
00010 cAudioMutex::cAudioMutex() : Initialized(false)
00011 {
00012 }
00013
00014 cAudioMutex::~cAudioMutex()
00015 {
00016 if(!Initialized)
00017 return;
00018 #ifdef CAUDIO_PLATFORM_WIN
00019 DeleteCriticalSection(&criticalSection);
00020 #else
00021 pthread_mutex_destroy(&Mutex);
00022 #endif
00023 }
00024
00025 void cAudioMutex::lock(void)
00026 {
00027 if(!Initialized)
00028 initialize();
00029
00030 #ifdef CAUDIO_PLATFORM_WIN
00031 EnterCriticalSection(&criticalSection);
00032 #else
00033 int error = pthread_mutex_lock(&Mutex);
00034 #endif
00035 }
00036
00037 void cAudioMutex::unlock(void)
00038 {
00039 if(!Initialized)
00040 return;
00041 #ifdef CAUDIO_PLATFORM_WIN
00042 LeaveCriticalSection(&criticalSection);
00043 #else
00044 int error = pthread_mutex_unlock(&Mutex);
00045 #endif
00046 }
00047
00048 void cAudioMutex::initialize(void)
00049 {
00050 #ifdef CAUDIO_PLATFORM_WIN
00051 InitializeCriticalSection(&criticalSection);
00052 #else
00053 pthread_mutexattr_t attr;
00054 int error = pthread_mutexattr_init(&attr);
00055 error = pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
00056 error = pthread_mutex_init(&Mutex, &attr);
00057 error = pthread_mutexattr_destroy(&attr);
00058 #endif
00059 Initialized=true;
00060 }
00061 #else
00062 cAudioMutex::cAudioMutex() : Initialized(false)
00063 {
00064 }
00065
00066 cAudioMutex::~cAudioMutex()
00067 {
00068
00069 }
00070
00071 void cAudioMutex::lock(void)
00072 {
00073
00074 }
00075
00076 void cAudioMutex::unlock(void)
00077 {
00078
00079 }
00080
00081 void cAudioMutex::initialize(void)
00082 {
00083
00084 }
00085 #endif
00086
00087 };