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

This class defines a thread mutual exclusion object. More...

#include <mutex.h>

Inheritance diagram for PTimedMutex:
Collaboration diagram for PTimedMutex:

Public Member Functions

 PTimedMutex ()
 
 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...
 
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...
 
virtual void Signal ()
 Signal that 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 ()
 
- Public Member Functions inherited from PObject
unsigned GetTraceContextIdentifier () const
 Get PTRACE context identifier. More...
 
void SetTraceContextIdentifier (unsigned id)
 
void GetTraceContextIdentifier (PObject &obj)
 
void GetTraceContextIdentifier (PObject *obj)
 
void SetTraceContextIdentifier (const PObject &obj)
 
void SetTraceContextIdentifier (const PObject *obj)
 
virtual ~PObject ()
 
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 const char * GetClass (unsigned ancestor=0) const
 Get the current dynamic type of the object instance. More...
 
PBoolean IsClass (const char *cls) const
 
virtual PBoolean InternalIsDescendant (const char *clsName) const
 Determine if the dynamic type of the current instance is a descendent of the specified class. More...
 
__inline const PObjectPTraceObjectInstance () const
 
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 const char * Class ()
 Get the name of the class as a C string. More...
 
static __inline const PObjectPTraceObjectInstance (const char *)
 
static __inline const PObjectPTraceObjectInstance (const PObject *obj)
 
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
 
- Friends inherited from PObject

Detailed Description

This class defines a thread mutual exclusion object.

A mutex is where a piece of code or data cannot be accessed by more than one thread at a time. To prevent this the PMutex is used in the following manner:


      PMutex mutex;
      ...
      mutex.Wait();
      ... critical section - only one thread at a time here.
      mutex.Signal();
      ...

The first thread will pass through the Wait() function, a second thread will block on that function until the first calls the Signal() function, releasing the second thread.

Constructor & Destructor Documentation

PTimedMutex::PTimedMutex ( )
PTimedMutex::PTimedMutex ( const PTimedMutex mutex)

Copy constructor is allowed but does not copy, allocating a new mutex.

Two copies of the same mutex information would be very bad.

Member Function Documentation

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

Assignment operator is allowed but does nothing.

Overwriting the old mutex information would be very bad.

virtual void PTimedMutex::Signal ( )
virtual

Signal that the synchronisation object is available.

Implements PSync.

PINLINE bool PTimedMutex::Try ( )
inline

Try to enter the critical section for exlusive access.

Does not wait.

Returns
true if cirical section entered, leave/Signal must be called.

References Wait().

virtual void PTimedMutex::Wait ( )
virtual

Block until the synchronisation object is available.

Implements PSync.

Referenced by Try().

virtual PBoolean PTimedMutex::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: