From 2e8a121a56f93dca3d6d641100a0e51af62df4e8 Mon Sep 17 00:00:00 2001 From: Yedidya Feldblum Date: Fri, 9 Sep 2016 14:44:11 -0700 Subject: [PATCH] Nomenclature in Synchronized - prefer read to shared Summary: [Folly] Nomenclature in `Synchronized` - prefer `read` to `shared`. `folly::Synchronized` is a higher-level abstraction, so it will use higher-level nomenclature than will lower-level tools like `std::mutex` and `folly::LockTraits`. `shared` describes the lock state, and is used in the C++ libraries. `read` describes the class of operations that calling code is permitted to perform. Reviewed By: simpkins Differential Revision: D3840060 fbshipit-source-id: 4b23eaa391cb59d1eca2bfacf72db89d3c7c591e --- folly/Synchronized.h | 4 ++-- folly/docs/Synchronized.md | 12 ++++++------ folly/test/SynchronizedTest.cpp | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/folly/Synchronized.h b/folly/Synchronized.h index beef1b75..1a245ea0 100644 --- a/folly/Synchronized.h +++ b/folly/Synchronized.h @@ -1151,7 +1151,7 @@ class LockedPtr : public LockedPtrBase< typename = typename std::enable_if< LockTraits::is_upgrade>::type> LockedPtr - moveFromUpgradeToShared() { + moveFromUpgradeToRead() { auto* parent_to_pass_on = this->parent_; this->parent_ = nullptr; return LockedPtr( @@ -1167,7 +1167,7 @@ class LockedPtr : public LockedPtrBase< typename = typename std::enable_if< LockTraits::is_upgrade>::type> LockedPtr - moveFromWriteToShared() { + moveFromWriteToRead() { auto* parent_to_pass_on = this->parent_; this->parent_ = nullptr; return LockedPtr( diff --git a/folly/docs/Synchronized.md b/folly/docs/Synchronized.md index 998c4380..e65015a2 100644 --- a/folly/docs/Synchronized.md +++ b/folly/docs/Synchronized.md @@ -397,8 +397,8 @@ downgraded by calling any of the following methods on the `LockedPtr` proxy * `moveFromUpgradeToWrite()` * `moveFromWriteToUpgrade()` -* `moveFromWriteToShared()` -* `moveFromUpgradeToShared()` +* `moveFromWriteToRead()` +* `moveFromUpgradeToRead()` Calling these leaves the `LockedPtr` object on which the method was called in an invalid `null` state and returns another LockedPtr proxy holding the @@ -429,15 +429,15 @@ This "move" can also occur in the context of a `withULockPtr()` // ulock is now null wlock->updateObj(); - // release write lock and acquire shared lock atomically - auto rlock = wlock.moveFromWriteToShared(); + // release write lock and acquire read lock atomically + auto rlock = wlock.moveFromWriteToRead(); // wlock is now null return rlock->newSize(); } else { - // release upgrade lock and acquire shared lock atomically - auto rlock = ulock.moveFromUpgradeToShared(); + // release upgrade lock and acquire read lock atomically + auto rlock = ulock.moveFromUpgradeToRead(); // ulock is now null return rlock->newSize(); } diff --git a/folly/test/SynchronizedTest.cpp b/folly/test/SynchronizedTest.cpp index f30303fa..4aaeadab 100644 --- a/folly/test/SynchronizedTest.cpp +++ b/folly/test/SynchronizedTest.cpp @@ -433,7 +433,7 @@ TEST_F(SynchronizedLockTest, UpgradableLocking) { // test going from upgrade to shared { auto ulock = sync.ulock(); - auto slock = ulock.moveFromUpgradeToShared(); + auto slock = ulock.moveFromUpgradeToRead(); EXPECT_EQ(static_cast(ulock), false); EXPECT_EQ( globalAllPowerfulAssertingMutex.lock_state, @@ -463,7 +463,7 @@ TEST_F(SynchronizedLockTest, UpgradableLocking) { // test going from exclusive to shared { auto wlock = sync.wlock(); - auto slock = wlock.moveFromWriteToShared(); + auto slock = wlock.moveFromWriteToRead(); EXPECT_EQ(static_cast(wlock), false); EXPECT_EQ( globalAllPowerfulAssertingMutex.lock_state, @@ -529,7 +529,7 @@ TEST_F(SynchronizedLockTest, UpgradableLockingWithULock) { globalAllPowerfulAssertingMutex.lock_state, FakeAllPowerfulAssertingMutexInternal::CurrentLockState::UPGRADE); - auto slock = ulock.moveFromUpgradeToShared(); + auto slock = ulock.moveFromUpgradeToRead(); EXPECT_EQ(static_cast(ulock), false); EXPECT_EQ( globalAllPowerfulAssertingMutex.lock_state, @@ -548,7 +548,7 @@ TEST_F(SynchronizedLockTest, UpgradableLockingWithULock) { globalAllPowerfulAssertingMutex.lock_state, FakeAllPowerfulAssertingMutexInternal::CurrentLockState::UNIQUE); - auto slock = wlock.moveFromWriteToShared(); + auto slock = wlock.moveFromWriteToRead(); EXPECT_EQ(static_cast(wlock), false); EXPECT_EQ( globalAllPowerfulAssertingMutex.lock_state, -- 2.34.1