/* * Copyright 2012 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkThreadUtils_DEFINED #define SkThreadUtils_DEFINED #include "SkTypes.h" class SkThread : SkNoncopyable { public: typedef void (*entryPointProc)(void*); SkThread(entryPointProc entryPoint, void* data = NULL); /** * Non-virtual, do not subclass. */ ~SkThread(); /** * Starts the thread. Returns false if the thread could not be started. */ bool start(); /** * Waits for the thread to finish. * If the thread has not started, returns immediately. */ void join(); /** * SkThreads with an affinity for the same processor will attempt to run cache * locally with each other. SkThreads with an affinity for different processors * will attempt to run on different cores. Returns false if the request failed. */ bool setProcessorAffinity(unsigned int processor); private: void* fData; }; #endif