3 |
* LinuxSampler - modular, streaming capable sampler * |
* LinuxSampler - modular, streaming capable sampler * |
4 |
* * |
* * |
5 |
* Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck * |
* Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck * |
6 |
* Copyright (C) 2005, 2006 Christian Schoenebeck * |
* Copyright (C) 2005 - 2013 Christian Schoenebeck * |
7 |
* * |
* * |
8 |
* This program is free software; you can redistribute it and/or modify * |
* This program is free software; you can redistribute it and/or modify * |
9 |
* it under the terms of the GNU General Public License as published by * |
* it under the terms of the GNU General Public License as published by * |
88 |
* Lock() call, one of them will be awaken. |
* Lock() call, one of them will be awaken. |
89 |
*/ |
*/ |
90 |
void Unlock(); |
void Unlock(); |
91 |
|
|
92 |
protected: |
protected: |
93 |
#if defined(WIN32) |
#if defined(WIN32) |
94 |
HANDLE hMutex; |
HANDLE hMutex; |
95 |
#else |
#else |
96 |
pthread_mutex_t __posix_mutex; |
pthread_mutex_t __posix_mutex; |
97 |
pthread_mutexattr_t __posix_mutexattr; |
pthread_mutexattr_t __posix_mutexattr; |
98 |
#endif |
#endif |
99 |
}; |
}; |
100 |
|
|
101 |
|
// Lock guard for exception safe locking |
102 |
|
class LockGuard { |
103 |
|
public: |
104 |
|
LockGuard(Mutex& m) : pm(m) { |
105 |
|
m.Lock(); |
106 |
|
} |
107 |
|
~LockGuard() { |
108 |
|
pm.Unlock(); |
109 |
|
} |
110 |
|
private: |
111 |
|
Mutex& pm; |
112 |
|
}; |
113 |
|
|
114 |
} // namespace LinuxSampler |
} // namespace LinuxSampler |
115 |
|
|
116 |
#endif // __MUTEX_H__ |
#endif // __MUTEX_H__ |