PTLib  Version 2.18.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PThread3Arg< Arg1Type, Arg2Type, Arg3Type > Class Template Reference

#include <thread.h>

Inheritance diagram for PThread3Arg< Arg1Type, Arg2Type, Arg3Type >:
Collaboration diagram for PThread3Arg< Arg1Type, Arg2Type, Arg3Type >:

Public Types

typedef void(* FnType )(Arg1Type arg1, Arg2Type arg2, Arg3Type arg3)
 
- Public Types inherited from PThread
enum  AutoDeleteFlag { AutoDeleteThread, NoAutoDeleteThread }
 Codes for thread autodelete flag. More...
 
- Public Types inherited from PObject
enum  Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
 Result of the comparison operation performed by the Compare() function. More...
 

Public Member Functions

 PThread3Arg (Arg1Type arg1, Arg2Type arg2, Arg3Type arg3, FnType function, bool autoDel=false, const char *name=NULL, PThread::Priority priority=PThread::NormalPriority)
 
 ~PThread3Arg ()
 
virtual void Main ()
 User override function for the main execution routine of the thread. More...
 
- Public Member Functions inherited from PThread
bool IsAutoDelete () const
 
int PXBlockOnChildTerminate (int pid, const PTimeInterval &timeout)
 
int PXBlockOnIO (int handle, int type, const PTimeInterval &timeout)
 
void PXAbortBlock () const
 
void PrintOn (ostream &strm) const
 Standard stream print function. More...
 
 P_DECLARE_TRACED_ENUM (Priority, LowestPriority, LowPriority, NormalPriority, HighPriority, HighestPriority)
 Codes for thread priorities. More...
 
 PThread (PINDEX stack, AutoDeleteFlag deletion=AutoDeleteThread, Priority priorityLevel=NormalPriority, const PString &threadName=PString::Empty())
 Create a new thread instance. More...
 
 ~PThread ()
 Destroy the thread, this simply calls the Terminate() function with all its restrictions and penalties. More...
 
virtual void Restart ()
 Restart a terminated thread using the same stack priority etc that was current when the thread terminated. More...
 
virtual void Terminate ()
 Terminate the thread. More...
 
virtual PBoolean IsTerminated () const
 Determine if the thread has been terminated or ran to completion. More...
 
void WaitForTermination () const
 Block and wait for the thread to terminate. More...
 
PBoolean WaitForTermination (const PTimeInterval &maxWait) const
 Block and wait for the thread to terminate. More...
 
virtual void Suspend (PBoolean susp=true)
 Suspend or resume the thread. More...
 
virtual void Resume ()
 Resume thread execution, this is identical to Suspend(false). More...
 
virtual PBoolean IsSuspended () const
 Determine if the thread is currently suspended. More...
 
virtual void SetPriority (Priority priorityLevel)
 Set the priority of the thread relative to other threads in the current process. More...
 
virtual Priority GetPriority () const
 Get the current priority of the thread in the current process. More...
 
virtual void SetAutoDelete (AutoDeleteFlag deletion=AutoDeleteThread)
 Set the flag indicating thread object is to be automatically deleted when the thread ends. More...
 
void SetNoAutoDelete ()
 Reet the flag indicating thread object is to be automatically deleted when the thread ends. More...
 
virtual PString GetThreadName () const
 Get the name of the thread. More...
 
virtual void SetThreadName (const PString &name)
 Change the name of the thread. More...
 
 PPROFILE_EXCLUDE (PThreadIdentifier GetThreadId() const )
 
 PPROFILE_EXCLUDE (static PThreadIdentifier GetCurrentThreadId())
 
 PPROFILE_EXCLUDE (PUniqueThreadIdentifier GetUniqueIdentifier() const )
 
 PPROFILE_EXCLUDE (static PUniqueThreadIdentifier GetCurrentUniqueIdentifier())
 
 PPROFILE_EXCLUDE (static PINDEX GetTotalCount())
 
 PPROFILE_EXCLUDE (bool GetTimes(Times &times))
 
 PPROFILE_EXCLUDE (static bool GetTimes(PThreadIdentifier id, Times &times))
 
 PPROFILE_EXCLUDE (static void GetTimes(std::vector< Times > &times))
 
- 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...
 

Protected Attributes

FnType m_function
 
Arg1Type m_arg1
 
Arg2Type m_arg2
 
Arg3Type m_arg3
 
- Protected Attributes inherited from PThread
enum PThread::Type m_type
 
PINDEX m_originalStackSize
 
PString m_threadName
 
PCriticalSection m_threadNameMutex
 
PThreadIdentifier m_threadId
 
PUniqueThreadIdentifier m_uniqueId
 
- Protected Attributes inherited from PObject
unsigned m_traceContextIdentifier
 

Additional Inherited Members

- Static Public Member Functions inherited from PThread
static bool WaitAndDelete (PThread *&thread, const PTimeInterval &maxWait=10000, PMutex *mutex=NULL, bool lock=true)
 Wait for thread termination and delete object. More...
 
static void Sleep (const PTimeInterval &delay)
 Suspend the current thread for the specified amount of time. More...
 
static PString GetThreadName (PThreadIdentifier id)
 Get the name of the thread. More...
 
static PString GetCurrentThreadName ()
 Get the current threads name. More...
 
static PString GetIdentifiersAsString (PThreadIdentifier tid, PUniqueThreadIdentifier uid)
 Convert to thread identifers as a string. More...
 
static void GetTimes (std::list< Times > &times)
 
static void GetTimes (std::set< Times > &times)
 
static int GetPercentageCPU (Times &previousTimes, const PTimeInterval &period=PTimeInterval(0, 1), PThreadIdentifier id=PNullThreadIdentifier)
 Calculate the percentage CPU used over a period of time. More...
 
static unsigned GetNumProcessors ()
 Get number of processors, or processor cores, this machine has available. More...
 
static PThreadCurrent ()
 Get the currently running thread object instance. More...
 
static void Yield ()
 Yield to another thread without blocking. More...
 
static PThreadCreate (const PNotifier &notifier, INT parameter=0, AutoDeleteFlag deletion=AutoDeleteThread, Priority priorityLevel=NormalPriority, const PString &threadName=PString::Empty(), PINDEX stackSize=0)
 Create a simple thread executing the specified notifier. More...
 
static PThreadCreate (const PNotifier &notifier, const PString &threadName)
 
- 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 Types inherited from PThread
enum  Type { e_IsAutoDelete, e_IsManualDelete, e_IsProcess, e_IsExternal }
 
- Protected Member Functions inherited from PObject
 PObject ()
 Constructor for PObject, made protected so cannot ever create one on its own. More...
 

Member Typedef Documentation

template<typename Arg1Type , typename Arg2Type , typename Arg3Type >
typedef void(* PThread3Arg< Arg1Type, Arg2Type, Arg3Type >::FnType)(Arg1Type arg1, Arg2Type arg2, Arg3Type arg3)

Constructor & Destructor Documentation

template<typename Arg1Type , typename Arg2Type , typename Arg3Type >
PThread3Arg< Arg1Type, Arg2Type, Arg3Type >::PThread3Arg ( Arg1Type  arg1,
Arg2Type  arg2,
Arg3Type  arg3,
FnType  function,
bool  autoDel = false,
const char *  name = NULL,
PThread::Priority  priority = PThread::NormalPriority 
)
inline

References PThread::Resume().

template<typename Arg1Type , typename Arg2Type , typename Arg3Type >
PThread3Arg< Arg1Type, Arg2Type, Arg3Type >::~PThread3Arg ( )
inline

Member Function Documentation

template<typename Arg1Type , typename Arg2Type , typename Arg3Type >
virtual void PThread3Arg< Arg1Type, Arg2Type, Arg3Type >::Main ( )
inlinevirtual

User override function for the main execution routine of the thread.

A descendent class must provide the code that will be executed in the thread within this function.

Note that the correct way for a thread to terminate is to return from this function.

Implements PThread.

References PThread3Arg< Arg1Type, Arg2Type, Arg3Type >::m_arg1, PThread3Arg< Arg1Type, Arg2Type, Arg3Type >::m_arg2, and PThread3Arg< Arg1Type, Arg2Type, Arg3Type >::m_arg3.

Member Data Documentation

template<typename Arg1Type , typename Arg2Type , typename Arg3Type >
Arg1Type PThread3Arg< Arg1Type, Arg2Type, Arg3Type >::m_arg1
protected
template<typename Arg1Type , typename Arg2Type , typename Arg3Type >
Arg2Type PThread3Arg< Arg1Type, Arg2Type, Arg3Type >::m_arg2
protected
template<typename Arg1Type , typename Arg2Type , typename Arg3Type >
Arg3Type PThread3Arg< Arg1Type, Arg2Type, Arg3Type >::m_arg3
protected
template<typename Arg1Type , typename Arg2Type , typename Arg3Type >
FnType PThread3Arg< Arg1Type, Arg2Type, Arg3Type >::m_function
protected

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