|
proxygen
|
#include <TimedMutex.h>
Classes | |
| struct | MutexWaiter |
Public Member Functions | |
| TimedMutex () noexcept | |
| ~TimedMutex () | |
| TimedMutex (const TimedMutex &rhs)=delete | |
| TimedMutex & | operator= (const TimedMutex &rhs)=delete |
| TimedMutex (TimedMutex &&rhs)=delete | |
| TimedMutex & | operator= (TimedMutex &&rhs)=delete |
| void | lock () |
| template<typename Rep , typename Period > | |
| bool | timed_lock (const std::chrono::duration< Rep, Period > &duration) |
| bool | try_lock () |
| void | unlock () |
Private Types | |
| enum | LockResult { LockResult::SUCCESS, LockResult::TIMEOUT, LockResult::STOLEN } |
| using | MutexWaiterList = folly::IntrusiveList< MutexWaiter,&MutexWaiter::hook > |
Private Member Functions | |
| template<typename WaitFunc > | |
| LockResult | lockHelper (WaitFunc &&waitFunc) |
Private Attributes | |
| folly::SpinLock | lock_ |
| bool | locked_ = false |
| MutexWaiterList | threadWaiters_ |
| MutexWaiterList | fiberWaiters_ |
| MutexWaiter * | notifiedFiber_ {nullptr} |
Like mutex but allows timed_lock in addition to lock and try_lock.
Definition at line 30 of file TimedMutex.h.
|
private |
Definition at line 73 of file TimedMutex.h.
|
strongprivate |
| Enumerator | |
|---|---|
| SUCCESS | |
| TIMEOUT | |
| STOLEN | |
Definition at line 61 of file TimedMutex.h.
|
inlinenoexcept |
|
inline |
Definition at line 34 of file TimedMutex.h.
References fiberWaiters_, lock(), notifiedFiber_, operator=(), folly::detail::rhs, threadWaiters_, timed_lock(), TimedMutex(), try_lock(), and unlock().
|
delete |
|
delete |
|
inline |
Definition at line 81 of file TimedMutex-inl.h.
References folly::fibers::TimedMutex::MutexWaiter::baton, lockHelper(), SUCCESS, TIMEOUT, and folly::fibers::Baton::wait().
Referenced by TEST(), timed_lock(), and ~TimedMutex().
|
private |
Definition at line 28 of file TimedMutex-inl.h.
References fiberWaiters_, lock_, locked_, notifiedFiber_, folly::fibers::onFiber(), STOLEN, SUCCESS, threadWaiters_, TIMEOUT, and folly::ulock().
Referenced by lock(), and timed_lock().
|
delete |
|
delete |
| bool folly::fibers::TimedMutex::timed_lock | ( | const std::chrono::duration< Rep, Period > & | duration | ) |
Definition at line 95 of file TimedMutex-inl.h.
References folly::assume_unreachable(), folly::fibers::TimedMutex::MutexWaiter::baton, folly::fibers::TimedMutex::MutexWaiter::hook, lock(), lock_, lockHelper(), STOLEN, SUCCESS, TIMEOUT, and folly::fibers::Baton::try_wait_for().
Referenced by TEST(), and ~TimedMutex().
|
inline |
Definition at line 127 of file TimedMutex-inl.h.
References lock_, and locked_.
Referenced by ~TimedMutex().
|
inline |
Definition at line 136 of file TimedMutex-inl.h.
References folly::fibers::TimedMutex::MutexWaiter::baton, fiberWaiters_, lock_, locked_, notifiedFiber_, folly::fibers::Baton::post(), and threadWaiters_.
Referenced by folly::fibers::TimedRWMutex< BatonType >::lock(), TEST(), and ~TimedMutex().
|
private |
Definition at line 78 of file TimedMutex.h.
Referenced by lockHelper(), unlock(), and ~TimedMutex().
|
private |
Definition at line 75 of file TimedMutex.h.
Referenced by folly::fibers::TimedRWMutex< BatonType >::downgrade(), lockHelper(), folly::fibers::TimedRWMutex< BatonType >::read_lock(), folly::fibers::TimedRWMutex< BatonType >::ReadHolder::ReadHolder(), timed_lock(), folly::fibers::TimedRWMutex< BatonType >::timed_read_lock(), folly::fibers::TimedRWMutex< BatonType >::timed_write_lock(), try_lock(), folly::fibers::TimedRWMutex< BatonType >::try_read_lock(), folly::fibers::TimedRWMutex< BatonType >::try_write_lock(), unlock(), folly::fibers::TimedRWMutex< BatonType >::unlock(), folly::fibers::TimedRWMutex< BatonType >::write_lock(), folly::fibers::TimedRWMutex< BatonType >::WriteHolder::WriteHolder(), folly::fibers::TimedRWMutex< BatonType >::ReadHolder::~ReadHolder(), and folly::fibers::TimedRWMutex< BatonType >::WriteHolder::~WriteHolder().
|
private |
Definition at line 76 of file TimedMutex.h.
Referenced by lockHelper(), try_lock(), and unlock().
|
private |
Definition at line 79 of file TimedMutex.h.
Referenced by lockHelper(), unlock(), and ~TimedMutex().
|
private |
Definition at line 77 of file TimedMutex.h.
Referenced by lockHelper(), unlock(), and ~TimedMutex().