carb::tasking::ThreadPoolWrapper

Defined in carb/tasking/ThreadPoolUtils.h

class ThreadPoolWrapper

Helper class for using IThreadPool API.

Public Functions

inline ThreadPoolWrapper(IThreadPool *poolInterface, size_t workerCount = 0)

Constructor.

Parameters
  • poolInterface – The acquired IThreadPool interface.

  • workerCount – (optional) The number of worker threads to create. If 0 (default) is specified, the value returned from IThreadPool::getDefaultWorkerCount() is used.

inline size_t getWorkerCount() const

Returns the number of worker threads in the thread pool.

Returns

The number of worker threads.

template<class Callable, class ...Args>
inline auto enqueueJob(Callable &&task, Args&&... args)

Enqueues a Callable to run on a worker thread.

Parameters
  • task – The callable object. May be a lambda, [member] function, functor, etc.

  • args – Optional std::bind-style arguments to pass to the callable object.

Returns

A std::future based on the return-type of the callable object. If enqueuing failed, valid() on the returned future will be false.

inline size_t getCurrentlyRunningJobCount() const

Returns the number of jobs currently enqueued or executing in the ThreadPool.

enqueueJob() increments this value and the value is decremented as jobs finish.

Note

This value changes by other threads and cannot be read atomically.

Returns

The number of jobs currently executing in the ThreadPool.

inline void waitUntilFinished() const

Blocks the calling thread until all enqueued tasks have completed.

inline bool isValid() const

Returns true if the underlying ThreadPool is valid.

Returns

true if the underlying ThreadPool is valid; false otherwise.

inline ~ThreadPoolWrapper()

Destructor.