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

This class implements critical section mutexes using the most efficient mechanism available on the host platform. More...

#include <mutex.h>

Inheritance diagram for PCriticalSection:
Collaboration diagram for PCriticalSection:

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...
 
PCriticalSectionoperator= (const PCriticalSection &)
 Assignment operator is allowed but does nothing. More...
 
Operations
PObjectClone () 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...
 
- 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
 
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

- 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...
 
- Protected Member Functions inherited from PObject
 PObject ()
 Constructor for PObject, made protected so cannot ever create one on its own. More...
 
- Protected Attributes inherited from PObject
unsigned m_traceContextIdentifier
 

Detailed Description

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.

Constructor & Destructor Documentation

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.

Member Function Documentation

PObject* PCriticalSection::Clone ( ) const
inlinevirtual

Create a new PCriticalSection.

Reimplemented from PObject.

References PCriticalSection().

void PCriticalSection::Enter ( )
inline

References Wait().

void PCriticalSection::Leave ( )
inline

References Signal().

PCriticalSection& PCriticalSection::operator= ( const PCriticalSection )
inline

Assignment operator is allowed but does nothing.

Overwriting the old critical section information would be very bad.

virtual void PCriticalSection::Signal ( )
virtual

Leave the critical section by unlocking the mutex.

Implements PSync.

Referenced by Leave().

bool PCriticalSection::Try ( )

Try to enter the critical section for exlusive access.

Does not wait.

Returns
true if cirical section entered, leave/Signal must be called.
virtual void PCriticalSection::Wait ( )
virtual

Enter the critical section by waiting for exclusive access.

Implements PSync.

Referenced by Enter().

virtual PBoolean PCriticalSection::Wait ( const PTimeInterval timeout)
virtual

Block, for a time, until the synchronisation object is available.

Returns
true if lock is acquired, false if timed out

Implements PSync.


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