summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/thread/Mutex.hxx23
1 files changed, 6 insertions, 17 deletions
diff --git a/src/thread/Mutex.hxx b/src/thread/Mutex.hxx
index 7e4e0fd2e..2f507f65d 100644
--- a/src/thread/Mutex.hxx
+++ b/src/thread/Mutex.hxx
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009-2015 Max Kellermann <max@duempel.org>
+ * Copyright (C) 2009-2016 Max Kellermann <max@duempel.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -30,6 +30,8 @@
#ifndef THREAD_MUTEX_HXX
#define THREAD_MUTEX_HXX
+#include <mutex>
+
#ifdef WIN32
#include "CriticalSection.hxx"
@@ -43,26 +45,13 @@ class Mutex : public PosixMutex {};
#endif
class ScopeLock {
- Mutex &mutex;
-
- bool active = true;
+ std::unique_lock<Mutex> lock;
public:
- ScopeLock(Mutex &_mutex):mutex(_mutex) {
- mutex.lock();
- };
-
- ~ScopeLock() {
- if (active)
- mutex.unlock();
- };
-
- ScopeLock(const ScopeLock &other) = delete;
- ScopeLock &operator=(const ScopeLock &other) = delete;
+ ScopeLock(Mutex &_mutex):lock(_mutex) {}
void Unlock() {
- mutex.unlock();
- active = false;
+ lock.unlock();
}
};