#include "DMTaskRunner.h" #include "DMTask.h" namespace DM { TaskRunner::TaskRunner(int cputhreads, int gpuThreads) : fMain(cputhreads) , fGpu(gpuThreads) {} void TaskRunner::add(Task* task) { if (task->usesGpu()) { fGpu.add(task); } else { fMain.add(task); } } void TaskRunner::wait() { // These wait calls block until the threadpool is done. We don't allow // children to spawn new GPU tasks so we can wait for that first knowing // we'll never try to add to it later. Same can't be said of fMain: fGpu // and fMain can both add tasks to fMain, so we have to wait for that last. fGpu.wait(); fMain.wait(); } } // namespace DM