cAudio 2.3.0
3d Audio Engine
Loading...
Searching...
No Matches
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
7namespace 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:16