Chromium Code Reviews| Index: base/threading/platform_thread.h |
| diff --git a/base/threading/platform_thread.h b/base/threading/platform_thread.h |
| index 576695a4e7b5f8028f47cc5e02921b551ffb0a39..c021f1a834c86758c271e1cfdb2b2747ae17521f 100644 |
| --- a/base/threading/platform_thread.h |
| +++ b/base/threading/platform_thread.h |
| @@ -19,6 +19,7 @@ |
| #elif defined(OS_POSIX) |
| #include <pthread.h> |
| #include <unistd.h> |
| +#include <ostream> |
|
jar (doing other things)
2013/05/15 02:18:36
nit: probably alphabetize by placing before line 2
epennerAtGoogle
2013/05/15 05:09:08
Done. I actually removed this.
epenner
2013/05/17 19:18:13
I went ahead and removed this.
|
| #endif |
| namespace base { |
| @@ -32,9 +33,48 @@ typedef DWORD PlatformThreadId; |
| typedef void* PlatformThreadHandle; // HANDLE |
| const PlatformThreadHandle kNullThreadHandle = NULL; |
| #elif defined(OS_POSIX) |
| -typedef pthread_t PlatformThreadHandle; |
| -const PlatformThreadHandle kNullThreadHandle = 0; |
| typedef pid_t PlatformThreadId; |
| +struct PlatformThreadHandle { |
|
jar (doing other things)
2013/05/15 02:18:36
nit: this should probably be a class.
You'll prob
epennerAtGoogle
2013/05/15 05:09:08
I made it a class to protect members, but default
epenner
2013/05/17 19:18:13
I made it into a class to protect private members,
|
| + PlatformThreadHandle() |
| + : handle(), |
| + id(0) { |
| + } |
| + |
| + PlatformThreadHandle(pthread_t handle) |
|
jar (doing other things)
2013/05/15 02:18:36
nit: explicit.
epennerAtGoogle
2013/05/15 05:09:08
Done.
epenner
2013/05/17 19:18:13
Done.
|
| + : handle(handle), |
| + id(0) { |
| + } |
| + |
| + PlatformThreadHandle(pthread_t handle, |
| + PlatformThreadId id) |
| + : handle(handle), |
| + id(id) { |
| + } |
| + |
| + operator bool() const { |
| + return !!handle; |
| + } |
| + |
| + bool operator!() { |
|
jar (doing other things)
2013/05/15 02:18:36
Instead of operator overload, use method names, li
epennerAtGoogle
2013/05/15 05:09:08
I couldn't do this because the handle on windows w
|
| + return !handle; |
| + } |
| + |
| + bool operator==(const PlatformThreadHandle& other) { |
|
jar (doing other things)
2013/05/15 02:18:36
nit: again, just define a method name.
epennerAtGoogle
2013/05/15 05:09:08
Done.
|
| + return handle == other.handle; |
| + } |
| + |
| + bool operator!=(const PlatformThreadHandle& other) { |
| + return handle != other.handle; |
| + } |
| + |
| + pthread_t handle; |
| + PlatformThreadId id; |
| +}; |
| + |
| +const PlatformThreadHandle kNullThreadHandle(0); |
| +std::ostream& operator<< (std::ostream &out, |
|
jar (doing other things)
2013/05/15 02:18:36
This is pretty uncommon, as use of streams is not
epennerAtGoogle
2013/05/15 05:09:08
Yes, I'm trying to remove it by changing a few cal
|
| + const PlatformThreadHandle& handle); |
| + |
| #endif |
| const PlatformThreadId kInvalidThreadId = 0; |
| @@ -43,7 +83,11 @@ const PlatformThreadId kInvalidThreadId = 0; |
| enum ThreadPriority{ |
| kThreadPriority_Normal, |
| // Suitable for low-latency, glitch-resistant audio. |
| - kThreadPriority_RealtimeAudio |
| + kThreadPriority_RealtimeAudio, |
| + // Suitable for threads which generate data for the display (at ~60Hz). |
| + kThreadPriority_Display, |
| + // Suitable for threads that shouldn't disrupt high priority work. |
| + kThreadPriority_Background |
| }; |
| // A namespace for low-level thread functions. |
| @@ -62,6 +106,9 @@ class BASE_EXPORT PlatformThread { |
| // Gets the current thread id, which may be useful for logging purposes. |
| static PlatformThreadId CurrentId(); |
| + // Get the current handle. |
| + static PlatformThreadHandle CurrentHandle(); |
| + |
| // Yield the current thread so another thread can be scheduled. |
| static void YieldCurrentThread(); |
| @@ -106,8 +153,6 @@ class BASE_EXPORT PlatformThread { |
| // |thread_handle|. |
| static void Join(PlatformThreadHandle thread_handle); |
| - // Sets the priority of the thread specified in |handle| to |priority|. |
| - // This does not work on Linux, use CreateWithPriority() instead. |
| static void SetThreadPriority(PlatformThreadHandle handle, |
| ThreadPriority priority); |