PTLib  Version 2.18.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PIntCondMutex Class Reference

This is a PCondMutex for which the conditional is the value of an integer. More...

#include <syncthrd.h>

Inheritance diagram for PIntCondMutex:
Collaboration diagram for PIntCondMutex:

Public Member Functions

Overrides from class PObject
void PrintOn (ostream &strm) const
 Print the object on the stream. More...
 
Condition access functions
virtual PBoolean Condition ()
 This is the condition that must be met for the WaitCondition() function to acquire the mutex. More...
 
 operator int () const
 Get the current value of the condition variable. More...
 
PIntCondMutexoperator= (int newval)
 Assign new condition value. More...
 
PIntCondMutexoperator++ ()
 Increment condition value. More...
 
PIntCondMutexoperator+= (int inc)
 Add to condition value. More...
 
PIntCondMutexoperator-- ()
 Decrement condition value. More...
 
PIntCondMutexoperator-= (int dec)
 Subtract from condition value. More...
 
- Public Member Functions inherited from PCondMutex
virtual void WaitCondition ()
 This function attempts to acquire the mutex, but will block not only until the mutex is free, but also that the condition returned by the Condition() function is also met. More...
 
virtual void Signal ()
 If there are waiting (blocked) threads then unblock the first one that was blocked. More...
 
virtual void OnWait ()
 This function is called immediately before blocking on the condition in the WaitCondition() function. More...
 
- Public Member Functions inherited from PTimedMutex
 PTimedMutex ()
 
 PTimedMutex (const PDebugLocation &location, unsigned timeout=0)
 
 PTimedMutex (const PTimedMutex &mutex)
 Copy constructor is allowed but does not copy, allocating a new mutex. More...
 
PTimedMutexoperator= (const PTimedMutex &)
 Assignment operator is allowed but does nothing. More...
 
 ~PTimedMutex ()
 Destruction. More...
 
virtual void Wait ()
 Block until the synchronisation object is available. More...
 
virtual PBoolean Wait (const PTimeInterval &timeout)
 Block, for a time, until the synchronisation object is available. More...
 
PINLINE bool Try ()
 Try to enter the critical section for exlusive access. More...
 
- Public Member Functions inherited from PSync
 PSync ()
 
virtual bool InstrumentedWait (const PTimeInterval &timeout, const PDebugLocation &)
 As for Wait() but with location of call for instrumentation. Mostly used internally. More...
 
virtual void InstrumentedSignal (const PDebugLocation &)
 As for Signal() but with location of call for instrumentation. Mostly used internally. More...
 
- Public Member Functions inherited from PObject
__inline unsigned GetTraceContextIdentifier () const
 Get PTRACE context identifier. More...
 
__inline void SetTraceContextIdentifier (unsigned id)
 
__inline void SetTraceContextIdentifier (const PObject &obj)
 
__inline void SetTraceContextIdentifier (const PObject *obj)
 
__inline void CopyTraceContextIdentifier (PObject &obj) const
 
__inline void CopyTraceContextIdentifier (PObject *obj) const
 
virtual ~PObject ()
 
__inline const char * GetClass () const
 
__inline bool IsClass (const char *name) const
 
__inline const PObjectPTraceObjectInstance () const
 
virtual PObjectClone () const
 Create a copy of the class on the heap. More...
 
template<class CLS >
CLS * CloneAs () const
 As for Clone() but converts to specified type. More...
 
virtual PINDEX HashFunction () const
 This function yields a hash value required by the PDictionary class. More...
 
virtual Comparison Compare (const PObject &obj) const
 Compare the two objects and return their relative rank. More...
 
virtual Comparison CompareObjectMemoryDirect (const PObject &obj) const
 Determine the byte wise comparison of two objects. More...
 
bool operator== (const PObject &obj) const
 Compare the two objects. More...
 
bool operator!= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator< (const PObject &obj) const
 Compare the two objects. More...
 
bool operator> (const PObject &obj) const
 Compare the two objects. More...
 
bool operator<= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator>= (const PObject &obj) const
 Compare the two objects. More...
 
virtual void ReadFrom (istream &strm)
 Input the contents of the object from the stream. More...
 
- Public Member Functions inherited from PMutexExcessiveLockInfo
void SetLocationName (const char *name)
 

Protected Attributes

int value
 
int target
 
Operation operation
 
- Protected Attributes inherited from PCondMutex
PSyncPoint syncPoint
 
- Protected Attributes inherited from PTimedMutex
PThreadIdentifier m_lockerId
 
PThreadIdentifier m_lastLockerId
 
PUniqueThreadIdentifier m_lastUniqueId
 
unsigned m_lockCount
 
- Protected Attributes inherited from PObject
unsigned m_traceContextIdentifier
 
- Protected Attributes inherited from PMutexExcessiveLockInfo
PDebugLocation m_location
 
unsigned m_excessiveLockTimeout
 
atomic< bool > m_excessiveLockActive
 
uint64_t m_startHeldSamplePoint
 

Construction

enum  Operation {
  LT, LE, EQ, GE,
  GT
}
 defines possible operators on current value and target value More...
 
 PIntCondMutex (int value=0, int target=0, Operation operation=LE)
 Create a cond mutex using an integer. More...
 

Additional Inherited Members

- Public Types inherited from PTimedMutex
enum  DeadlockStackWalkModes { DeadlockStackWalkDisabled, DeadlockStackWalkEnabled, DeadlockStackWalkOnPhantomRelease, DeadlockStackWalkNoSymbols }
 
- Public Types inherited from PObject
enum  Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
 Result of the comparison operation performed by the Compare() function. More...
 
- Static Public Member Functions inherited from PObject
static __inline void CopyTraceContextIdentifier (PObject &to, const PObject &from)
 
static __inline void CopyTraceContextIdentifier (PObject &to, const PObject *from)
 
static __inline void CopyTraceContextIdentifier (PObject *to, const PObject &from)
 
static __inline void CopyTraceContextIdentifier (PObject *to, const PObject *from)
 
static __inline const char * Class ()
 
static __inline const PObjectPTraceObjectInstance (const char *)
 
static __inline const PObjectPTraceObjectInstance (const PObject *obj)
 
template<typename T >
static Comparison Compare2 (T v1, T v2)
 Compare two types, returning Comparison type. More...
 
static Comparison InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
 Internal function caled from CompareObjectMemoryDirect() More...
 
- Static Public Attributes inherited from PTimedMutex
static unsigned ExcessiveLockWaitTime
 
static DeadlockStackWalkModes DeadlockStackWalkMode
 
- Protected Member Functions inherited from PTimedMutex
void Construct ()
 
void PlatformConstruct ()
 
bool PlatformWait (const PTimeInterval &timeout)
 
void PlatformSignal (const PDebugLocation *location)
 
void InternalWait (const PDebugLocation *location)
 
void InternalWaitComplete (uint64_t startWaitCycle, const PDebugLocation *location)
 
bool InternalSignal (const PDebugLocation *location)
 
- Protected Member Functions inherited from PObject
 PObject ()
 Constructor for PObject, made protected so cannot ever create one on its own. More...
 
- Protected Member Functions inherited from PMutexExcessiveLockInfo
 PMutexExcessiveLockInfo ()
 
 PMutexExcessiveLockInfo (const PDebugLocation &location, unsigned timeout)
 
 PMutexExcessiveLockInfo (const PMutexExcessiveLockInfo &other)
 
virtual ~PMutexExcessiveLockInfo ()
 
void Construct (unsigned timeout)
 
void PrintOn (ostream &strm) const
 
void ExcessiveLockPhantom (const PObject &mutex) const
 
virtual void AcquiredLock (uint64_t startWaitCycle, bool readOnly, const PDebugLocation &location)
 
virtual void ReleasedLock (const PObject &mutex, uint64_t startHeldSamplePoint, bool readOnly, const PDebugLocation &location)
 
- Static Protected Member Functions inherited from PMutexExcessiveLockInfo
static unsigned MinDeadlockTime (unsigned waitTime)
 

Detailed Description

This is a PCondMutex for which the conditional is the value of an integer.

Member Enumeration Documentation

defines possible operators on current value and target value

Enumerator
LT 

Less than.

LE 

Less than or equal to.

EQ 

Equal to.

GE 

Greater than or equal to.

GT 

Greater than.

Constructor & Destructor Documentation

PIntCondMutex::PIntCondMutex ( int  value = 0,
int  target = 0,
Operation  operation = LE 
)

Create a cond mutex using an integer.

Parameters
valueinitial value if the integer
targettarget vaue which causes the mutex to unlock
operationcomparison operator

Member Function Documentation

virtual PBoolean PIntCondMutex::Condition ( )
virtual

This is the condition that must be met for the WaitCondition() function to acquire the mutex.

Returns
true if condition is met.

Implements PCondMutex.

PIntCondMutex::operator int ( ) const
inline

Get the current value of the condition variable.

Returns
Current condition variable value.

References value.

PIntCondMutex& PIntCondMutex::operator++ ( )

Increment condition value.

Use the Wait() function to acquire the mutex, modify the value, then release the mutex, possibly releasing the thread in the WaitCondition() function if the condition was met by the operation.

Returns
The object reference for consecutive operations in the same statement.
PIntCondMutex& PIntCondMutex::operator+= ( int  inc)

Add to condition value.

Use the Wait() function to acquire the mutex, modify the value, then release the mutex, possibly releasing the thread in the WaitCondition() function if the condition was met by the operation.

Returns
The object reference for consecutive operations in the same statement.
PIntCondMutex& PIntCondMutex::operator-- ( )

Decrement condition value.

Use the Wait() function to acquire the mutex, modify the value, then release the mutex, possibly releasing the thread in the WaitCondition() function if the condition was met by the operation.

Returns
The object reference for consecutive operations in the same statement.
PIntCondMutex& PIntCondMutex::operator-= ( int  dec)

Subtract from condition value.

Use the Wait() function to acquire the mutex, modify the value, then release the mutex, possibly releasing the thread in the WaitCondition() function if the condition was met by the operation.

Returns
The object reference for consecutive operations in the same statement.
PIntCondMutex& PIntCondMutex::operator= ( int  newval)

Assign new condition value.

Use the Wait() function to acquire the mutex, modify the value, then release the mutex, possibly releasing the thread in the WaitCondition() function if the condition was met by the operation.

Returns
The object reference for consecutive operations in the same statement.
void PIntCondMutex::PrintOn ( ostream &  strm) const
virtual

Print the object on the stream.

This will be of the form #"(value < target)"#.

Reimplemented from PTimedMutex.

Member Data Documentation

Operation PIntCondMutex::operation
protected
int PIntCondMutex::target
protected
int PIntCondMutex::value
protected

Referenced by operator int().


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