From 3519c8f2473c40fd6d2ce86e29742ef30b7e11f1 Mon Sep 17 00:00:00 2001 From: Justin Berger Date: Fri, 1 Dec 2017 12:09:51 -0700 Subject: utilities: Swapped to use std C++11 mutex/threading constructs --- Source/cmServer.cxx | 7 ++++--- Source/cmUVHandlePtr.cxx | 10 +++++----- Source/cm_thread.hxx | 40 ---------------------------------------- 3 files changed, 9 insertions(+), 48 deletions(-) diff --git a/Source/cmServer.cxx b/Source/cmServer.cxx index ac42fde..1b04ca2 100644 --- a/Source/cmServer.cxx +++ b/Source/cmServer.cxx @@ -18,6 +18,7 @@ #include #include #include +#include #include void on_signal(uv_signal_t* signal, int signum) @@ -490,7 +491,7 @@ void cmServerBase::StartShutDown() SIGHUPHandler.reset(); { - cm::unique_lock lock(ConnectionsMutex); + std::unique_lock lock(ConnectionsMutex); for (auto& connection : Connections) { connection->OnConnectionShuttingDown(); } @@ -537,7 +538,7 @@ cmServerBase::~cmServerBase() void cmServerBase::AddNewConnection(cmConnection* ownedConnection) { { - cm::unique_lock lock(ConnectionsMutex); + std::unique_lock lock(ConnectionsMutex); Connections.emplace_back(ownedConnection); } ownedConnection->SetServer(this); @@ -554,7 +555,7 @@ void cmServerBase::OnDisconnect(cmConnection* pConnection) return m.get() == pConnection; }; { - cm::unique_lock lock(ConnectionsMutex); + std::unique_lock lock(ConnectionsMutex); Connections.erase( std::remove_if(Connections.begin(), Connections.end(), pred), Connections.end()); diff --git a/Source/cmUVHandlePtr.cxx b/Source/cmUVHandlePtr.cxx index d7e38c3..eb70416 100644 --- a/Source/cmUVHandlePtr.cxx +++ b/Source/cmUVHandlePtr.cxx @@ -4,9 +4,9 @@ #include "cmUVHandlePtr.h" #include +#include #include -#include "cm_thread.hxx" #include "cm_uv.h" namespace cm { @@ -97,16 +97,16 @@ struct uv_handle_deleter * which is mandated by the standard for Deleter on * shared_ptrs. */ - std::shared_ptr handleMutex; + std::shared_ptr handleMutex; uv_handle_deleter() - : handleMutex(std::make_shared()) + : handleMutex(std::make_shared()) { } void operator()(uv_async_t* handle) { - cm::lock_guard lock(*handleMutex); + std::lock_guard lock(*handleMutex); default_delete(handle); } }; @@ -116,7 +116,7 @@ void uv_async_ptr::send() auto deleter = std::get_deleter>(this->handle); assert(deleter); - cm::lock_guard lock(*deleter->handleMutex); + std::lock_guard lock(*deleter->handleMutex); if (this->handle) { uv_async_send(*this); } diff --git a/Source/cm_thread.hxx b/Source/cm_thread.hxx index ec5fe1d..84e6a5c 100644 --- a/Source/cm_thread.hxx +++ b/Source/cm_thread.hxx @@ -7,34 +7,6 @@ #include "cm_uv.h" namespace cm { -class mutex -{ - CM_DISABLE_COPY(mutex) - uv_mutex_t _M_; - -public: - mutex() { uv_mutex_init(&_M_); } - ~mutex() { uv_mutex_destroy(&_M_); } - - void lock() { uv_mutex_lock(&_M_); } - - void unlock() { uv_mutex_unlock(&_M_); } -}; - -template -class lock_guard -{ - T& _mutex; - CM_DISABLE_COPY(lock_guard) - -public: - lock_guard(T& m) - : _mutex(m) - { - _mutex.lock(); - } - ~lock_guard() { _mutex.unlock(); } -}; class shared_mutex { @@ -68,17 +40,5 @@ public: } ~shared_lock() { _mutex.unlock_shared(); } }; - -template -class unique_lock : public lock_guard -{ - CM_DISABLE_COPY(unique_lock) - -public: - unique_lock(T& m) - : lock_guard(m) - { - } -}; } #endif -- cgit v0.12