| Index: base/threading/simple_thread.cc
|
| diff --git a/base/threading/simple_thread.cc b/base/threading/simple_thread.cc
|
| index fa1a3449e057e2176244b092ab9b20b4ef88ba8e..6c64a17d6ab2fea1ec792715ad4697adcc21bd94 100644
|
| --- a/base/threading/simple_thread.cc
|
| +++ b/base/threading/simple_thread.cc
|
| @@ -12,29 +12,39 @@
|
| namespace base {
|
|
|
| SimpleThread::SimpleThread(const std::string& name_prefix)
|
| - : SimpleThread(name_prefix, Options()) {}
|
| + : name_prefix_(name_prefix),
|
| + name_(name_prefix),
|
| + thread_(),
|
| + event_(WaitableEvent::ResetPolicy::MANUAL,
|
| + WaitableEvent::InitialState::NOT_SIGNALED),
|
| + tid_(0),
|
| + joined_(false) {}
|
|
|
| SimpleThread::SimpleThread(const std::string& name_prefix,
|
| const Options& options)
|
| : name_prefix_(name_prefix),
|
| name_(name_prefix),
|
| options_(options),
|
| + thread_(),
|
| event_(WaitableEvent::ResetPolicy::MANUAL,
|
| - WaitableEvent::InitialState::NOT_SIGNALED) {}
|
| + WaitableEvent::InitialState::NOT_SIGNALED),
|
| + tid_(0),
|
| + joined_(false) {}
|
|
|
| SimpleThread::~SimpleThread() {
|
| DCHECK(HasBeenStarted()) << "SimpleThread was never started.";
|
| - DCHECK(thread_.is_null()) << "Joinable SimpleThread destroyed without being "
|
| - << "Join()ed.";
|
| + DCHECK(HasBeenJoined()) << "SimpleThread destroyed without being Join()ed.";
|
| }
|
|
|
| void SimpleThread::Start() {
|
| DCHECK(!HasBeenStarted()) << "Tried to Start a thread multiple times.";
|
| - bool success = options_.joinable
|
| - ? PlatformThread::CreateWithPriority(options_.stack_size, this,
|
| - &thread_, options_.priority)
|
| - : PlatformThread::CreateNonJoinableWithPriority(
|
| - options_.stack_size, this, options_.priority);
|
| + bool success;
|
| + if (options_.priority() == ThreadPriority::NORMAL) {
|
| + success = PlatformThread::Create(options_.stack_size(), this, &thread_);
|
| + } else {
|
| + success = PlatformThread::CreateWithPriority(options_.stack_size(), this,
|
| + &thread_, options_.priority());
|
| + }
|
| DCHECK(success);
|
| base::ThreadRestrictions::ScopedAllowWait allow_wait;
|
| event_.Wait(); // Wait for the thread to complete initialization.
|
| @@ -43,9 +53,7 @@
|
| void SimpleThread::Join() {
|
| DCHECK(HasBeenStarted()) << "Tried to Join a never-started thread.";
|
| DCHECK(!HasBeenJoined()) << "Tried to Join a thread multiple times.";
|
| - DCHECK(!thread_.is_null()) << "A non-joinable thread can't be joined.";
|
| PlatformThread::Join(thread_);
|
| - thread_ = PlatformThreadHandle();
|
| joined_ = true;
|
| }
|
|
|
|
|