IThreadPool#
Fully qualified name: carb::tasking::IThreadPool
Defined in carb/tasking/IThreadPool.h
-
struct IThreadPool#
Optional plugin providing helpful facilities for utilizing a pool of threads to perform basic small tasks.
Note
Prefer using ThreadPoolWrapper.
Warning
It is not recommended to use IThreadPool in conjunction with ITasking; the latter is a much richer feature set and generally preferred over IThreadPool. IThreadPool is a simple thread pool with the ability to run individual tasks.
Warning
If multiple ThreadPool objects are used, caution must be taken to not overburden the system with too many threads.
Public Functions
-
inline ThreadPool *create() const#
Creates a new thread pool where the number of worker equals to a value returned by the “getDefaultWorkerCount” function.
- Returns:
A newly created thread pool.
Public Members
-
ThreadPool *(*createEx)(size_t workerCount)#
Creates a new thread pool where the number of worker equals to the number specified by the user.
- Param workerCount:
Required number of worker threads.
- Return:
A newly created thread pool.
-
void (*destroy)(ThreadPool *threadPool)#
Destroys previously created thread pool.
- Param threadPool:
Previously created thread pool.
-
size_t (*getDefaultWorkerCount)()#
Returns default number of workers used for creation of a new thread pool.
- Return:
The default number of workers.
-
size_t (*getWorkerCount)(ThreadPool *threadPool)#
Returns the number of worker threads in the thread pool.
- Param threadPool:
ThreadPool previously created with create().
- Return:
The number of worker threads.
-
bool (*enqueueJob)(ThreadPool *threadPool, JobFn jobFunction, void *jobData)#
Adds a new task to be executed by the thread pool.
- Param threadPool:
Thread pool for execution of the job.
- Param jobFunction:
User provided function to be executed by a worker.
- Param jobData:
User provided data for the job, the memory must not be released until it no longer needed by the task.
- Return:
Returns true if the task was successfully added into the thread pool.
-
size_t (*getCurrentlyRunningJobCount)(ThreadPool *threadPool)#
Returns the number of currently executed tasks in the thread pool.
- Param threadPool:
Thread pool to be inspected.
- Return:
The number of currently executed tasks in the thread pool.
-
void (*waitUntilFinished)(ThreadPool *threadPool)#
Blocks execution of the current thread until the thread pool finishes all queued jobs.
- Param threadPool:
Thread pool to wait on.
Public Static Functions
- static inline constexpr carb::InterfaceDesc getInterfaceDesc(
Returns information about this interface.
Auto-generated by CARB_PLUGIN_INTERFACE() or CARB_PLUGIN_INTERFACE_EX.
- Returns:
The carb::InterfaceDesc struct with information about this interface.
- static inline constexpr carb::InterfaceDesc getLatestInterfaceDesc(
Returns information about the latest version of this interface.
Auto-generated by CARB_PLUGIN_INTERFACE() or CARB_PLUGIN_INTERFACE_EX.
- Returns:
The carb::InterfaceDesc struct with information about the latest version of this interface.
-
inline ThreadPool *create() const#