GDAL
|
Pool of worker threads. More...
#include <cpl_worker_thread_pool.h>
Public Member Functions | |
CPLWorkerThreadPool () | |
Instantiate a new pool of worker threads. More... | |
~CPLWorkerThreadPool () | |
Destroys a pool of worker threads. More... | |
bool | Setup (int nThreads, CPLThreadFunc pfnInitFunc, void **pasInitData) |
Setup the pool. More... | |
bool | Setup (int nThreads, CPLThreadFunc pfnInitFunc, void **pasInitData, bool bWaitallStarted) |
Setup the pool. More... | |
std::unique_ptr< CPLJobQueue > | CreateJobQueue () |
Create a new job queue based on this worker thread pool. More... | |
bool | SubmitJob (CPLThreadFunc pfnFunc, void *pData) |
Queue a new job. More... | |
bool | SubmitJobs (CPLThreadFunc pfnFunc, const std::vector< void * > &apData) |
Queue several jobs. More... | |
void | WaitCompletion (int nMaxRemainingJobs=0) |
Wait for completion of part or whole jobs. More... | |
void | WaitEvent () |
Wait for completion of at least one job, if there are any remaining. | |
int | GetThreadCount () const |
Return the number of threads setup. | |
Pool of worker threads.
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.
std::unique_ptr< CPLJobQueue > CPLWorkerThreadPool::CreateJobQueue | ( | ) |
Create a new job queue based on this worker thread pool.
The worker thread pool must remain alive while the returned object is itself alive.
bool CPLWorkerThreadPool::Setup | ( | int | nThreads, |
CPLThreadFunc | pfnInitFunc, | ||
void ** | pasInitData | ||
) |
Setup the pool.
nThreads | Number of threads to launch |
pfnInitFunc | Initialization function to run in each thread. May be NULL |
pasInitData | Array of initialization data. Its length must be nThreads, or it should be NULL. |
bool CPLWorkerThreadPool::Setup | ( | int | nThreads, |
CPLThreadFunc | pfnInitFunc, | ||
void ** | pasInitData, | ||
bool | bWaitallStarted | ||
) |
Setup the pool.
nThreads | Number of threads to launch |
pfnInitFunc | Initialization function to run in each thread. May be NULL |
pasInitData | Array of initialization data. Its length must be nThreads, or it should be NULL. |
bWaitallStarted | Whether to wait for all threads to be fully started. |
bool CPLWorkerThreadPool::SubmitJob | ( | CPLThreadFunc | pfnFunc, |
void * | pData | ||
) |
Queue a new job.
pfnFunc | Function to run for the job. |
pData | User data to pass to the job function. |
bool CPLWorkerThreadPool::SubmitJobs | ( | CPLThreadFunc | pfnFunc, |
const std::vector< void * > & | apData | ||
) |
Queue several jobs.
pfnFunc | Function to run for the job. |
apData | User data instances to pass to the job function. |
void CPLWorkerThreadPool::WaitCompletion | ( | int | nMaxRemainingJobs = 0 | ) |
Wait for completion of part or whole jobs.
nMaxRemainingJobs | Maximum number of pendings jobs that are allowed in the queue after this method has completed. Might be 0 to wait for all jobs. |