|
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 |