PTLib Version 2.12.9

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
PThreadPool< Work_T > Class Template Reference

Low Level thread pool. More...

`#include <threadpool.h>`

Inheritance diagram for PThreadPool< Work_T >:
[legend]
Collaboration diagram for PThreadPool< Work_T >:
[legend]

## Classes
struct | GroupInfo
class | InternalWork
class | WorkerThread

## Public Types
typedef std::map< Work_T *, InternalWork > | ExternalToInternalWorkMap_T
typedef std::map< std::string, GroupInfo > | GroupInfoMap_t

## Public Member Functions
| PThreadPool (unsigned maxWorkers=10, unsigned maxWorkUnits=0, const char *threadName=NULL, PThread::Priority priority=PThread::NormalPriority)
bool | AddWork (Work_T *work, const char *group=NULL)
bool | RemoveWork (Work_T *work, bool removeFromWorker=true)
Public Member Functions inherited from PThreadPoolBase
| ~PThreadPoolBase ()
virtual WorkerThreadBase * | CreateWorkerThread ()=0
virtual WorkerThreadBase * | AllocateWorker ()
virtual WorkerThreadBase * | NewWorker ()
unsigned | GetMaxWorkers () const
void | SetMaxWorkers (unsigned count)
unsigned | GetMaxUnits () const
void | SetMaxUnits (unsigned count)
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 PObject * | Clone () 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 PObject * | PTraceObjectInstance () 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...

## Public Attributes
ExternalToInternalWorkMap_T | m_externalToInternalWorkMap
GroupInfoMap_t | m_groupInfoMap

## Additional Inherited Members
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 PObject * | PTraceObjectInstance (const char *)
static __inline const PObject * | PTraceObjectInstance (const PObject *obj)
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
| Internal function caled from CompareObjectMemoryDirect() More...
Protected Types inherited from PThreadPoolBase
typedef std::vector < WorkerThreadBase * > | WorkerList_t
Protected Member Functions inherited from PThreadPoolBase
| PThreadPoolBase (unsigned maxWorkerCount, unsigned maxWorkUnitCount, const char *threadName, PThread::Priority priority)
virtual bool | CheckWorker (WorkerThreadBase *worker)
void | StopWorker (WorkerThreadBase *worker)
Protected Attributes inherited from PThreadPoolBase
PMutex | m_listMutex
WorkerList_t | m_workers
unsigned | m_maxWorkerCount
unsigned | m_maxWorkUnitCount
unsigned | m_highWaterMark
PString | m_threadName
PThread::Priority | m_priority
Friends inherited from PObject

## Detailed Description

### template<class Work_T>
class PThreadPool< Work_T >

Low Level thread pool.

## Member Typedef Documentation

template<class Work_T>

typedef std::map<Work_T *, InternalWork> PThreadPool< Work_T >::ExternalToInternalWorkMap_T

template<class Work_T>

typedef std::map<std::string, GroupInfo> PThreadPool< Work_T >::GroupInfoMap_t

## Constructor & Destructor Documentation

template<class Work_T>

PThreadPool< Work_T >::PThreadPool | ( | unsigned | maxWorkers = `10`,
|  | unsigned | maxWorkUnits = `0`,
|  | const char * | threadName = `NULL`,
|  | PThread::Priority | priority = `PThread::NormalPriority`
| ) |  |
| inline

## Member Function Documentation

template<class Work_T>

bool PThreadPool< Work_T >::AddWork | ( | Work_T * | work,
|  | const char * | group = `NULL`
| ) |  |
| inline

References PThreadPoolBase::AllocateWorker(), PThreadPool< Work_T >::GroupInfo::m_count, PThreadPool< Work_T >::m_externalToInternalWorkMap, PThreadPool< Work_T >::m_groupInfoMap, PThreadPoolBase::m_listMutex, and PTRACE.

template<class Work_T>

bool PThreadPool< Work_T >::RemoveWork | ( | Work_T * | work,
|  | bool | removeFromWorker = `true`
| ) |  |
| inline

References PThreadPool< Work_T >::InternalWork::m_worker, PAssert, and PThreadPool< Work_T >::WorkerThread::RemoveWork().

Referenced by PQueuedThreadPool< Work_T >::QueuedWorkerThread::Main().

## Member Data Documentation

template<class Work_T>

ExternalToInternalWorkMap_T PThreadPool< Work_T >::m_externalToInternalWorkMap

Referenced by PThreadPool< Work_T >::AddWork().

template<class Work_T>

GroupInfoMap_t PThreadPool< Work_T >::m_groupInfoMap

Referenced by PThreadPool< Work_T >::AddWork().

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

- threadpool.h