1#ifndef DMTaskRunner_DEFINED
2#define DMTaskRunner_DEFINED
3
4#include "SkThreadPool.h"
5#include "SkTypes.h"
6
7// TaskRunner runs Tasks on one of two threadpools depending on the Task's usesGpu() method.
8// This lets us drive the GPU with a small number of threads (e.g. 2 or 4 can be faster than 1)
9// while not swamping it with requests from the full fleet of threads that CPU-bound tasks run on.
10
11namespace DM {
12
13class Task;
14
15class TaskRunner : SkNoncopyable {
16public:
17    TaskRunner(int cputhreads, int gpuThreads);
18
19    void add(Task* task);
20    void wait();
21
22private:
23    SkThreadPool fMain, fGpu;
24};
25
26}  // namespace DM
27
28#endif  // DMTaskRunner_DEFINED
29