OGR
Public Member Functions | List of all members
CPLWorkerThreadPool Class Reference

#include <cpl_worker_thread_pool.h>

Public Member Functions

 CPLWorkerThreadPool ()
 
 ~CPLWorkerThreadPool ()
 
bool Setup (int nThreads, CPLThreadFunc pfnInitFunc, void **pasInitData)
 
bool SubmitJob (CPLThreadFunc pfnFunc, void *pData)
 
bool SubmitJobs (CPLThreadFunc pfnFunc, const std::vector< void * > &apData)
 
void WaitCompletion (int nMaxRemainingJobs=0)
 
int GetThreadCount () const
 

Detailed Description

Pool of worker threads

Constructor & Destructor Documentation

CPLWorkerThreadPool::CPLWorkerThreadPool ( )

Instantiate a new pool of worker threads.

The pool is in an uninitialized state after this call. The Setup() method must be called.

CPLWorkerThreadPool::~CPLWorkerThreadPool ( )

Destroys a pool of worker threads.

Any still pending job will be completed before the destructor returns.

References CPLListDestroy(), and WaitCompletion().

Member Function Documentation

int CPLWorkerThreadPool::GetThreadCount ( ) const
inline

Return the number of threads setup

bool CPLWorkerThreadPool::Setup ( int  nThreads,
CPLThreadFunc  pfnInitFunc,
void **  pasInitData 
)

Setup the pool.

Parameters
nThreadsNumber of threads to launch
pfnInitFuncInitialization function to run in each thread. May be NULL
pasInitDataArray of initialization data. Its length must be nThreads, or it should be NULL.
Returns
true if initialization was successful.

References CPLAssert.

bool CPLWorkerThreadPool::SubmitJob ( CPLThreadFunc  pfnFunc,
void *  pData 
)

Queue a new job.

Parameters
pfnFuncFunction to run for the job.
pDataUser data to pass to the job function.
Returns
true in case of success.

References CPLAssert, CPLDebug(), CPLFree, _CPLList::pData, _CPLList::psNext, VSI_MALLOC_VERBOSE, and VSIFree().

bool CPLWorkerThreadPool::SubmitJobs ( CPLThreadFunc  pfnFunc,
const std::vector< void * > &  apData 
)

Queue several jobs

Parameters
pfnFuncFunction to run for the job.
apDataUser data instances to pass to the job function.
Returns
true in case of success.

References CPLAssert, CPLDebug(), CPLFree, _CPLList::pData, _CPLList::psNext, VSI_MALLOC_VERBOSE, and VSIFree().

void CPLWorkerThreadPool::WaitCompletion ( int  nMaxRemainingJobs = 0)

Wait for completion of part or whole jobs.

Parameters
nMaxRemainingJobsMaximum number of pendings jobs that are allowed in the queue after this method has completed. Might be 0 to wait for all jobs.

Referenced by ~CPLWorkerThreadPool().


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

Generated for GDAL by doxygen 1.8.5.