#include <bslmt_meteredmutex.h>
This class implements a mutex, that has the additional capability to keep track of hold time and wait time. The hold time is defined as the cumulative duration for which the mutex was in the locked state. The wait time is defined as the duration for which threads waited for the mutex.
See bslmt_meteredmutex
◆ MeteredMutex()
bslmt::MeteredMutex::MeteredMutex |
( |
| ) |
|
|
inline |
◆ ~MeteredMutex()
bslmt::MeteredMutex::~MeteredMutex |
( |
| ) |
|
|
inline |
◆ holdTime()
Return the hold time (in nanoseconds) accumulated since the most recent call to resetMetrics
(or MeteredMutex
if resetMetrics
was never called).
◆ lastResetTime()
Return the time in nanoseconds (referenced to an arbitrary but fixed origin) of the most recent invocation to resetMetrics
(or creation time if resetMetrics
was never invoked). User can calculate the difference (in nanoseconds) between the current time and the last reset time by expression bsls::TimeUtil::getTimer() - clientMutex.lastResetTime()
.
◆ lock()
void bslmt::MeteredMutex::lock |
( |
| ) |
|
|
inline |
Acquire the lock on this metered mutex. If this mutex is currently locked, suspend the execution of the current thread until the lock can be acquired. Update the wait and hold time appropriately. The behavior is undefined if the calling thread already owns the lock.
◆ resetMetrics()
void bslmt::MeteredMutex::resetMetrics |
( |
| ) |
|
Reset the wait and hold time to zero and record the current time. All subsequent calls (that are made before a subsequent call to resetMetrics
) to waitTime
(or holdTime
) will return the wait (or hold) time, accumulated since this call. Also, all subsequent calls (that are made before a subsequent call to resetMetrics
) to lastResetTime
will return the time of this call.
◆ tryLock()
int bslmt::MeteredMutex::tryLock |
( |
| ) |
|
|
inline |
Attempt to acquire the lock on this metered mutex. Return 0 on success, and a non-zero value if this mutex is already locked, or if an error occurs. Update the wait and hold time appropriately. The behavior is undefined if the calling thread already owns the lock.
◆ unlock()
void bslmt::MeteredMutex::unlock |
( |
| ) |
|
|
inline |
Release the lock on this mutex that was previously acquired through a successful call to lock
or tryLock
. Update the hold time appropriately. The behavior is undefined unless the calling thread currently owns the lock.
◆ waitTime()
Return the wait time (in nanoseconds), accumulated since the most recent call to resetMetrics
(or MeteredMutex
if resetMetrics
was never called).
The documentation for this class was generated from the following file: