cMutex.h

00001 // Copyright (c) 2008-2010 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones
00002 // This file is part of the "cAudio Engine"
00003 // For conditions of distribution and use, see copyright notice in cAudio.h
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>    //Basic windows include
00013         #else
00014         #include <pthread.h>    //Assumed linux system
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         //Dud class to disable the mutex
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 
 All Classes Namespaces Functions Variables Enumerations

Generated on Sat Feb 20 22:55:07 2010 for cAudio by  doxygen 1.6.2