Nomenclature in Synchronized - prefer read to shared
authorYedidya Feldblum <yfeldblum@fb.com>
Fri, 9 Sep 2016 21:44:11 +0000 (14:44 -0700)
committerFacebook Github Bot 8 <facebook-github-bot-8-bot@fb.com>
Fri, 9 Sep 2016 21:53:27 +0000 (14:53 -0700)
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
folly/docs/Synchronized.md
folly/test/SynchronizedTest.cpp

index beef1b756534f2c0843331049ef11774087a3666..1a245ea09c144af25df7157d9ef04209d375834c 100644 (file)
@@ -1151,7 +1151,7 @@ class LockedPtr : public LockedPtrBase<
       typename = typename std::enable_if<
           LockTraits<typename SyncType::MutexType>::is_upgrade>::type>
   LockedPtr<SynchronizedType, LockPolicyFromUpgradeToShared>
-  moveFromUpgradeToShared() {
+  moveFromUpgradeToRead() {
     auto* parent_to_pass_on = this->parent_;
     this->parent_ = nullptr;
     return LockedPtr<SynchronizedType, LockPolicyFromUpgradeToShared>(
@@ -1167,7 +1167,7 @@ class LockedPtr : public LockedPtrBase<
       typename = typename std::enable_if<
           LockTraits<typename SyncType::MutexType>::is_upgrade>::type>
   LockedPtr<SynchronizedType, LockPolicyFromExclusiveToShared>
-  moveFromWriteToShared() {
+  moveFromWriteToRead() {
     auto* parent_to_pass_on = this->parent_;
     this->parent_ = nullptr;
     return LockedPtr<SynchronizedType, LockPolicyFromExclusiveToShared>(
index 998c4380e725c62b6e7ae768033d51d0cb01902d..e65015a27c98affd4e7e0ff1143983e0ee6db8cc 100644 (file)
@@ -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();
       }
index f30303fa4553871a0a16dd7b22735528f38215c8..4aaeadabd49755aaee38c3e47010fc02916e6922 100644 (file)
@@ -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<bool>(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<bool>(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<bool>(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<bool>(wlock), false);
     EXPECT_EQ(
         globalAllPowerfulAssertingMutex.lock_state,