projects
/
folly.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove/make private the default ***Holder constructor to allow compile time detection...
[folly.git]
/
folly
/
SharedMutex.h
diff --git
a/folly/SharedMutex.h
b/folly/SharedMutex.h
index 49dd29c64a3c65929e93ea5dad2e4be85cb386e7..571af4a7e2749342c5b1a9ea811271bc550ac6a7 100644
(file)
--- a/
folly/SharedMutex.h
+++ b/
folly/SharedMutex.h
@@
-1133,10
+1133,15
@@
class SharedMutexImpl {
public:
class ReadHolder {
public:
class ReadHolder {
- public:
ReadHolder() : lock_(nullptr) {}
ReadHolder() : lock_(nullptr) {}
- explicit ReadHolder(const SharedMutexImpl* lock) : ReadHolder(*lock) {}
+ public:
+ explicit ReadHolder(const SharedMutexImpl* lock)
+ : lock_(const_cast<SharedMutexImpl*>(lock)) {
+ if (lock_) {
+ lock_->lock_shared(token_);
+ }
+ }
explicit ReadHolder(const SharedMutexImpl& lock)
: lock_(const_cast<SharedMutexImpl*>(&lock)) {
explicit ReadHolder(const SharedMutexImpl& lock)
: lock_(const_cast<SharedMutexImpl*>(&lock)) {
@@
-1190,10
+1195,14
@@
class SharedMutexImpl {
};
class UpgradeHolder {
};
class UpgradeHolder {
- public:
UpgradeHolder() : lock_(nullptr) {}
UpgradeHolder() : lock_(nullptr) {}
- explicit UpgradeHolder(SharedMutexImpl* lock) : UpgradeHolder(*lock) {}
+ public:
+ explicit UpgradeHolder(SharedMutexImpl* lock) : lock_(lock) {
+ if (lock_) {
+ lock_->lock_upgrade();
+ }
+ }
explicit UpgradeHolder(SharedMutexImpl& lock) : lock_(&lock) {
lock_->lock_upgrade();
explicit UpgradeHolder(SharedMutexImpl& lock) : lock_(&lock) {
lock_->lock_upgrade();
@@
-1236,10
+1245,14
@@
class SharedMutexImpl {
};
class WriteHolder {
};
class WriteHolder {
- public:
WriteHolder() : lock_(nullptr) {}
WriteHolder() : lock_(nullptr) {}
- explicit WriteHolder(SharedMutexImpl* lock) : WriteHolder(*lock) {}
+ public:
+ explicit WriteHolder(SharedMutexImpl* lock) : lock_(lock) {
+ if (lock_) {
+ lock_->lock();
+ }
+ }
explicit WriteHolder(SharedMutexImpl& lock) : lock_(&lock) {
lock_->lock();
explicit WriteHolder(SharedMutexImpl& lock) : lock_(&lock) {
lock_->lock();