From: David Reiss Date: Tue, 9 Mar 2010 05:19:37 +0000 (+0000) Subject: cpp: Add enum and constructor to RWGuard to make read/write more visible X-Git-Tag: 0.3.0~90 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=e96fa5502f38d91e7c417343e4c504384fc84f31;p=common%2Fthrift.git cpp: Add enum and constructor to RWGuard to make read/write more visible git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920669 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/lib/cpp/src/concurrency/Mutex.h b/lib/cpp/src/concurrency/Mutex.h index f7ee9f25..a33b9952 100644 --- a/lib/cpp/src/concurrency/Mutex.h +++ b/lib/cpp/src/concurrency/Mutex.h @@ -86,15 +86,34 @@ class Guard { const Mutex& mutex_; }; + +// Can be used as second argument to RWGuard to make code more readable +// as to whether we're doing acquireRead() or acquireWrite(). +enum RWGuardType { + RW_READ = 0, + RW_WRITE = 1, +}; + + class RWGuard { public: - RWGuard(const ReadWriteMutex& value, bool write = 0) : rw_mutex_(value) { + RWGuard(const ReadWriteMutex& value, bool write = false) + : rw_mutex_(value) { if (write) { rw_mutex_.acquireWrite(); } else { rw_mutex_.acquireRead(); } } + + RWGuard(const ReadWriteMutex& value, RWGuardType type) + : rw_mutex_(value) { + if (type == RW_WRITE) { + rw_mutex_.acquireWrite(); + } else { + rw_mutex_.acquireRead(); + } + } ~RWGuard() { rw_mutex_.release(); }