1 /* 2 * Copyright 2012 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkThreadUtils_DEFINED 9 #define SkThreadUtils_DEFINED 10 11 #include "SkTypes.h" 12 13 class SkThread : SkNoncopyable { 14 public: 15 typedef void (*entryPointProc)(void*); 16 17 SkThread(entryPointProc entryPoint, void* data = NULL); 18 19 /** 20 * Non-virtual, do not subclass. 21 */ 22 ~SkThread(); 23 24 /** 25 * Starts the thread. Returns false if the thread could not be started. 26 */ 27 bool start(); 28 29 /** 30 * Waits for the thread to finish. 31 * If the thread has not started, returns immediately. 32 */ 33 void join(); 34 35 /** 36 * SkThreads with an affinity for the same processor will attempt to run cache 37 * locally with each other. SkThreads with an affinity for different processors 38 * will attempt to run on different cores. Returns false if the request failed. 39 */ 40 bool setProcessorAffinity(unsigned int processor); 41 42 private: 43 void* fData; 44 }; 45 46 #endif 47