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