Remove use of base/synchronization in scheduler 1:1 replacment with std classes. Change-Id: Ie753a49f84da32a8d440dd307a6f871d6fee2985 Reviewed-on: https://gn-review.googlesource.com/1700 Reviewed-by: Brett Wilson <brettw@chromium.org> Commit-Queue: Scott Graham <scottmg@chromium.org>
diff --git a/tools/gn/scheduler.cc b/tools/gn/scheduler.cc index 8da3035..00b5c61 100644 --- a/tools/gn/scheduler.cc +++ b/tools/gn/scheduler.cc
@@ -18,7 +18,8 @@ : main_thread_run_loop_(MsgLoop::Current()), input_file_manager_(new InputFileManager), verbose_logging_(false), - pool_work_count_cv_(&pool_work_count_lock_), + pool_work_count_lock_(), + pool_work_count_cv_(), worker_pool_(), is_failed_(false), suppress_output_for_testing_(false), @@ -72,8 +73,8 @@ std::move(work).Run(); self->DecrementWorkCount(); if (!self->pool_work_count_.Decrement()) { - base::AutoLock auto_lock(self->pool_work_count_lock_); - self->pool_work_count_cv_.Signal(); + std::unique_lock<std::mutex> auto_lock(self->pool_work_count_lock_); + self->pool_work_count_cv_.notify_one(); } }, this, std::move(work))); @@ -179,7 +180,7 @@ } void Scheduler::WaitForPoolTasks() { - base::AutoLock lock(pool_work_count_lock_); + std::unique_lock<std::mutex> lock(pool_work_count_lock_); while (!pool_work_count_.IsZero()) - pool_work_count_cv_.Wait(); + pool_work_count_cv_.wait(lock); }
diff --git a/tools/gn/scheduler.h b/tools/gn/scheduler.h index a7af3d4..1677b4d 100644 --- a/tools/gn/scheduler.h +++ b/tools/gn/scheduler.h
@@ -5,13 +5,13 @@ #ifndef TOOLS_GN_SCHEDULER_H_ #define TOOLS_GN_SCHEDULER_H_ +#include <condition_variable> #include <map> +#include <mutex> #include "base/atomic_ref_count.h" #include "base/files/file_path.h" #include "base/macros.h" -#include "base/synchronization/condition_variable.h" -#include "base/synchronization/lock.h" #include "msg_loop.h" #include "task.h" #include "tools/gn/input_file_manager.h" @@ -118,10 +118,10 @@ base::AtomicRefCount pool_work_count_; // Lock for |pool_work_count_cv_|. - base::Lock pool_work_count_lock_; + std::mutex pool_work_count_lock_; // Condition variable signaled when |pool_work_count_| reaches zero. - base::ConditionVariable pool_work_count_cv_; + std::condition_variable pool_work_count_cv_; WorkerPool worker_pool_;