19#ifndef NANOVDB_INVOKE_H_HAS_BEEN_INCLUDED
20#define NANOVDB_INVOKE_H_HAS_BEEN_INCLUDED
22#include "../NanoVDB.h"
25#include <tbb/parallel_invoke.h>
35#ifndef NANOVDB_USE_TBB
37template<
typename Func>
38void parallel_invoke(std::vector<std::thread> &threadPool,
const Func &taskFunc) {
39 threadPool.emplace_back(taskFunc);
43template<
typename Func,
typename... Rest>
44void parallel_invoke(std::vector<std::thread> &threadPool,
const Func &taskFunc1, Rest... taskFuncN) {
45 threadPool.emplace_back(taskFunc1);
46 parallel_invoke(threadPool, taskFuncN...);
50template<
typename Func>
51void serial_invoke(
const Func &taskFunc) {taskFunc();}
54template<
typename Func,
typename... Rest>
55void serial_invoke(
const Func &taskFunc1, Rest... taskFuncN) {
57 serial_invoke(taskFuncN...);
63template<
typename Func,
typename... Rest>
69 const auto threadCount = std::thread::hardware_concurrency()>>1;
Definition DenseGrid.h:402
int invoke(const Func &taskFunc1, Rest... taskFuncN)
Definition Invoke.h:64