Chromium Code Reviews| Index: base/threading/simple_thread.h |
| diff --git a/base/threading/simple_thread.h b/base/threading/simple_thread.h |
| index f9f5e9104595cff04d97730fc17860a971edd0a4..c5cd4e00483dbc835b7d4b73d3f2e6d212202fd5 100644 |
| --- a/base/threading/simple_thread.h |
| +++ b/base/threading/simple_thread.h |
| @@ -30,9 +30,8 @@ |
| // MyThreadRunner runner; |
| // DelegateSimpleThread thread(&runner, "good_name_here"); |
| // thread.Start(); |
| -// // Start will return after the Thread has been successfully started and |
| -// // initialized. The newly created thread will invoke runner->Run(), and |
| -// // run until it returns. |
| +// // The newly created thread will invoke runner->Run(), and run until it |
| +// // returns. |
| // thread.Join(); // Wait until the thread has exited. You *MUST* Join! |
| // // The SimpleThread object is still valid, however you may not call Join |
| // // or Start again. |
| @@ -48,6 +47,7 @@ |
| #include "base/base_export.h" |
| #include "base/compiler_specific.h" |
| +#include "base/logging.h" |
| #include "base/macros.h" |
| #include "base/synchronization/lock.h" |
| #include "base/synchronization/waitable_event.h" |
| @@ -96,14 +96,8 @@ class BASE_EXPORT SimpleThread : public PlatformThread::Delegate { |
| // Subclasses should override the Run method. |
| virtual void Run() = 0; |
| - // Return the thread id, only valid after Start(). |
| - PlatformThreadId tid() { return tid_; } |
| - |
| - // Return True if Start() has ever been called. |
| - bool HasBeenStarted(); |
| - |
| - // Return True if Join() has ever been called. |
| - bool HasBeenJoined() { return joined_; } |
| + // Return the thread id. |
| + PlatformThreadId GetTid() const; |
| // Overridden from PlatformThread::Delegate: |
| void ThreadMain() override; |
| @@ -112,10 +106,20 @@ class BASE_EXPORT SimpleThread : public PlatformThread::Delegate { |
| const std::string name_prefix_; |
| std::string name_; |
| const Options options_; |
| - PlatformThreadHandle thread_; // PlatformThread handle, reset after Join. |
| - WaitableEvent event_; // Signaled if Start() was ever called. |
| - PlatformThreadId tid_ = kInvalidThreadId; // The backing thread's id. |
| - bool joined_ = false; // True if Join has been called. |
| + |
| + // PlatformThread handle, reset after Join. |
| + PlatformThreadHandle thread_; |
| + |
| + // Signaled once |tid_| is set. |
| + mutable WaitableEvent tid_set_event_; |
|
gab
2017/02/06 20:29:10
id_event_ (to match thread.h)
fdoray
2017/02/06 20:46:48
Done.
|
| + |
| + // The backing thread's id. |
| + PlatformThreadId tid_ = kInvalidThreadId; |
| + |
| +#if DCHECK_IS_ON() |
| + bool has_been_started_ = false; |
| + bool has_been_joined_ = false; |
| +#endif |
| DISALLOW_COPY_AND_ASSIGN(SimpleThread); |
| }; |