cAudio  2.3.0
3d Audio Engine
cMutex.cpp
1 // Copyright (c) 2008-2011 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones, Murat (wolfmanfx) Sari
2 // This file is part of the "cAudio Engine"
3 // For conditions of distribution and use, see copyright notice in cAudio.h
4 
5 #include "cMutex.h"
6 
7 namespace cAudio
8 {
9 #if CAUDIO_MAKE_THREAD_SAFE == 1
10  cAudioMutex::cAudioMutex() : Initialized(false)
11  {
12  }
13 
14  cAudioMutex::~cAudioMutex()
15  {
16  if(!Initialized)
17  return;
18  #ifdef CAUDIO_PLATFORM_WIN
19  DeleteCriticalSection(&criticalSection);
20  #else
21  pthread_mutex_destroy(&Mutex);
22  #endif
23  }
24 
25  void cAudioMutex::lock(void)
26  {
27  if(!Initialized)
28  initialize();
29 
30  #ifdef CAUDIO_PLATFORM_WIN
31  EnterCriticalSection(&criticalSection);
32  #else
33  pthread_mutex_lock(&Mutex);
34  #endif
35  }
36 
37  void cAudioMutex::unlock(void)
38  {
39  if(!Initialized)
40  return;
41  #ifdef CAUDIO_PLATFORM_WIN
42  LeaveCriticalSection(&criticalSection);
43  #else
44  pthread_mutex_unlock(&Mutex);
45  #endif
46  }
47 
48  void cAudioMutex::initialize(void)
49  {
50  #ifdef CAUDIO_PLATFORM_WIN
51  InitializeCriticalSection(&criticalSection);
52  #else
53  pthread_mutexattr_t attr;
54  pthread_mutexattr_init(&attr);
55  pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE);
56  pthread_mutex_init(&Mutex, &attr);
57  pthread_mutexattr_destroy(&attr);
58  #endif
59  Initialized=true;
60  }
61 #endif
62 
63 };
Main namespace for the entire cAudio library.
Definition: cAudioCapture.h:15