PTLib  Version 2.18.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PThreadPoolBase::WorkerThreadBase Class Referenceabstract

#include <threadpool.h>

Inheritance diagram for PThreadPoolBase::WorkerThreadBase:
Collaboration diagram for PThreadPoolBase::WorkerThreadBase:

Public Member Functions

virtual bool Work ()=0
 
virtual void Shutdown ()=0
 
virtual unsigned GetWorkSize () const =0
 
 PDECLARE_MUTEX (m_workerMutex)
 
- 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...
 

Public Attributes

PThreadPoolBasem_pool
 
bool m_shutdown
 

Protected Member Functions

 WorkerThreadBase (PThreadPoolBase &pool, Priority priority, const char *threadName)
 
virtual void Main ()
 User override function for the main execution routine of the thread. More...
 
- Protected Member Functions inherited from PObject
 PObject ()
 Constructor for PObject, made protected so cannot ever create one on its own. More...
 

Additional Inherited Members

- 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...
 
- 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 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
 

Constructor & Destructor Documentation

PThreadPoolBase::WorkerThreadBase::WorkerThreadBase ( PThreadPoolBase pool,
Priority  priority,
const char *  threadName 
)
protected

Member Function Documentation

virtual unsigned PThreadPoolBase::WorkerThreadBase::GetWorkSize ( ) const
pure virtual
virtual void PThreadPoolBase::WorkerThreadBase::Main ( )
protectedvirtual

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.

PThreadPoolBase::WorkerThreadBase::PDECLARE_MUTEX ( m_workerMutex  )
virtual void PThreadPoolBase::WorkerThreadBase::Shutdown ( )
pure virtual
virtual bool PThreadPoolBase::WorkerThreadBase::Work ( )
pure virtual

Member Data Documentation

PThreadPoolBase& PThreadPoolBase::WorkerThreadBase::m_pool
bool PThreadPoolBase::WorkerThreadBase::m_shutdown

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