proxygen
folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder Class Reference

#include <SharedMutex.h>

Public Member Functions

 UpgradeHolder (SharedMutexImpl *lock)
 
 UpgradeHolder (SharedMutexImpl &lock)
 
 UpgradeHolder (WriteHolder &&writer)
 
 UpgradeHolder (UpgradeHolder &&rhs) noexcept
 
UpgradeHolderoperator= (UpgradeHolder &&rhs) noexcept
 
 UpgradeHolder (const UpgradeHolder &rhs)=delete
 
UpgradeHolderoperator= (const UpgradeHolder &rhs)=delete
 
 ~UpgradeHolder ()
 
void unlock ()
 

Private Member Functions

 UpgradeHolder ()
 

Private Attributes

SharedMutexImpllock_
 

Friends

class WriteHolder
 
class ReadHolder
 

Detailed Description

template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
class folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder

Definition at line 1364 of file SharedMutex.h.

Constructor & Destructor Documentation

template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder::UpgradeHolder ( )
inlineprivate

Definition at line 1365 of file SharedMutex.h.

1365 : lock_(nullptr) {}
template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder::UpgradeHolder ( SharedMutexImpl lock)
inlineexplicit

Definition at line 1368 of file SharedMutex.h.

1368  : lock_(lock) {
1369  if (lock_) {
1370  lock_->lock_upgrade();
1371  }
1372  }
template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder::UpgradeHolder ( SharedMutexImpl lock)
inlineexplicit

Definition at line 1374 of file SharedMutex.h.

1374  : lock_(&lock) {
1375  lock_->lock_upgrade();
1376  }
template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder::UpgradeHolder ( WriteHolder &&  writer)
inlineexplicit

Definition at line 1379 of file SharedMutex.h.

1379  : lock_(writer.lock_) {
1380  assert(writer.lock_ != nullptr);
1381  writer.lock_ = nullptr;
1383  }
template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder::UpgradeHolder ( UpgradeHolder &&  rhs)
inlinenoexcept

Definition at line 1385 of file SharedMutex.h.

References folly::detail::rhs.

1385  : lock_(rhs.lock_) {
1386  rhs.lock_ = nullptr;
1387  }
FOLLY_PUSH_WARNING RHS rhs
Definition: Traits.h:649
template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder::UpgradeHolder ( const UpgradeHolder rhs)
delete
template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder::~UpgradeHolder ( )
inline

Definition at line 1397 of file SharedMutex.h.

1397  {
1398  unlock();
1399  }

Member Function Documentation

template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
UpgradeHolder& folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder::operator= ( UpgradeHolder &&  rhs)
inlinenoexcept

Definition at line 1389 of file SharedMutex.h.

References folly::detail::rhs, and folly::f14::swap().

1389  {
1390  std::swap(lock_, rhs.lock_);
1391  return *this;
1392  }
FOLLY_PUSH_WARNING RHS rhs
Definition: Traits.h:649
void swap(SwapTrackingAlloc< T > &, SwapTrackingAlloc< T > &)
Definition: F14TestUtil.h:414
template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
UpgradeHolder& folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder::operator= ( const UpgradeHolder rhs)
delete
template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
void folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder::unlock ( )
inline

Definition at line 1401 of file SharedMutex.h.

1401  {
1402  if (lock_) {
1403  lock_->unlock_upgrade();
1404  lock_ = nullptr;
1405  }
1406  }

Friends And Related Function Documentation

template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
friend class ReadHolder
friend

Definition at line 1410 of file SharedMutex.h.

template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
friend class WriteHolder
friend

Definition at line 1409 of file SharedMutex.h.

Member Data Documentation

template<bool ReaderPriority, typename Tag_ = void, template< typename > class Atom = std::atomic, bool BlockImmediately = false, bool AnnotateForThreadSanitizer = kIsSanitizeThread && !ReaderPriority>
SharedMutexImpl* folly::SharedMutexImpl< ReaderPriority, Tag_, Atom, BlockImmediately, AnnotateForThreadSanitizer >::UpgradeHolder::lock_
private

Definition at line 1411 of file SharedMutex.h.


The documentation for this class was generated from the following file: