PTLib
Version 2.18.8
|
This class implements critical section mutexes using the most efficient mechanism available on the host platform. More...
#include <mutex.h>
Public Member Functions | |
Construction | |
PCriticalSection () | |
Create a new critical section object . More... | |
PCriticalSection (const PCriticalSection &) | |
Allow copy constructor, but it actually does not copy the critical section, it creates a brand new one as they cannot be shared in that way. More... | |
~PCriticalSection () | |
Destroy the critical section object. More... | |
PCriticalSection & | operator= (const PCriticalSection &) |
Assignment operator is allowed but does nothing. More... | |
Operations | |
PObject * | Clone () const |
Create a new PCriticalSection. More... | |
virtual void | Wait () |
Enter the critical section by waiting for exclusive access. More... | |
void | Enter () |
virtual PBoolean | Wait (const PTimeInterval &timeout) |
Block, for a time, until the synchronisation object is available. More... | |
virtual void | Signal () |
Leave the critical section by unlocking the mutex. More... | |
void | Leave () |
bool | Try () |
Try to enter the critical section for exlusive access. More... | |
![]() | |
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... | |
![]() | |
__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 PObject * | PTraceObjectInstance () const |
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 | PrintOn (ostream &strm) const |
Output the contents of the object to the stream. More... | |
virtual void | ReadFrom (istream &strm) |
Input the contents of the object from the stream. More... | |
Additional Inherited Members | |
![]() | |
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 } |
Result of the comparison operation performed by the Compare() function. More... | |
![]() | |
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 PObject * | PTraceObjectInstance (const char *) |
static __inline const PObject * | PTraceObjectInstance (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... | |
![]() | |
PObject () | |
Constructor for PObject, made protected so cannot ever create one on its own. More... | |
![]() | |
unsigned | m_traceContextIdentifier |
This class implements critical section mutexes using the most efficient mechanism available on the host platform.
For example in Windows, a CRITICAL_SECTION is used.
Note: There is no deadlock detection available on this version of a mutex, so it should only be used where a deadlock is clearly impossible, that is, there are never mopre than one mutex in the region being locked.
PCriticalSection::PCriticalSection | ( | ) |
Create a new critical section object .
Referenced by Clone().
PCriticalSection::PCriticalSection | ( | const PCriticalSection & | ) |
Allow copy constructor, but it actually does not copy the critical section, it creates a brand new one as they cannot be shared in that way.
PCriticalSection::~PCriticalSection | ( | ) |
Destroy the critical section object.
|
inlinevirtual |
|
inline |
References Wait().
|
inline |
References Signal().
|
inline |
Assignment operator is allowed but does nothing.
Overwriting the old critical section information would be very bad.
|
virtual |
bool PCriticalSection::Try | ( | ) |
Try to enter the critical section for exlusive access.
Does not wait.
|
virtual |
|
virtual |
Block, for a time, until the synchronisation object is available.
Implements PSync.