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().