summaryrefslogtreecommitdiff
path: root/src/threading/mutex_auto_lock.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/threading/mutex_auto_lock.h')
-rw-r--r--src/threading/mutex_auto_lock.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/threading/mutex_auto_lock.h b/src/threading/mutex_auto_lock.h
index 1c39349e5..25caf7e14 100644
--- a/src/threading/mutex_auto_lock.h
+++ b/src/threading/mutex_auto_lock.h
@@ -28,7 +28,8 @@ DEALINGS IN THE SOFTWARE.
#if __cplusplus >= 201103L
#include <mutex>
- using MutexAutoLock = std::lock_guard<std::mutex>;
+ using MutexAutoLock = std::unique_lock<std::mutex>;
+ using RecursiveMutexAutoLock = std::unique_lock<std::recursive_mutex>;
#else
#include "threading/mutex.h"
@@ -44,6 +45,15 @@ private:
Mutex &mutex;
};
+class RecursiveMutexAutoLock
+{
+public:
+ RecursiveMutexAutoLock(RecursiveMutex &m) : mutex(m) { mutex.lock(); }
+ ~RecursiveMutexAutoLock() { mutex.unlock(); }
+
+private:
+ RecursiveMutex &mutex;
+};
#endif
#endif