Index: base/task_scheduler/scheduler_worker_pool_impl.cc |
diff --git a/base/task_scheduler/scheduler_worker_pool_impl.cc b/base/task_scheduler/scheduler_worker_pool_impl.cc |
index e143d161372c34456c7d90d0ed7af2f880217b2a..497db9c06430259a5c28ce3dc2126f68d9c08068 100644 |
--- a/base/task_scheduler/scheduler_worker_pool_impl.cc |
+++ b/base/task_scheduler/scheduler_worker_pool_impl.cc |
@@ -213,11 +213,14 @@ class SchedulerWorkerPoolImpl::SchedulerWorkerDelegateImpl |
bool CanDetach(SchedulerWorker* worker) override; |
void RegisterSingleThreadTaskRunner() { |
- subtle::Barrier_AtomicIncrement(&num_single_threaded_runners_, 1); |
+ // No barrier as barriers only affect sequential consistency which is |
+ // irrelevant in a single variable use case (they don't force an immediate |
+ // flush anymore than atomics do by default). |
+ subtle::NoBarrier_AtomicIncrement(&num_single_threaded_runners_, 1); |
} |
void UnregisterSingleThreadTaskRunner() { |
- subtle::Barrier_AtomicIncrement(&num_single_threaded_runners_, -1); |
+ subtle::NoBarrier_AtomicIncrement(&num_single_threaded_runners_, -1); |
} |
private: |
@@ -540,14 +543,14 @@ TimeDelta SchedulerWorkerPoolImpl::SchedulerWorkerDelegateImpl:: |
bool SchedulerWorkerPoolImpl::SchedulerWorkerDelegateImpl::CanDetach( |
SchedulerWorker* worker) { |
// It's not an issue if |num_single_threaded_runners_| is incremented after |
- // this because the newly created TaskRunner (from which no task has run yet) |
- // will simply run all its tasks on the next physical thread created by the |
- // worker. |
+ // this because the newly created SingleThreadTaskRunner (from which no task |
+ // has run yet) will simply run all its tasks on the next physical thread |
+ // created by the worker. |
const bool can_detach = |
!idle_start_time_.is_null() && |
(TimeTicks::Now() - idle_start_time_) > outer_->suggested_reclaim_time_ && |
worker != outer_->PeekAtIdleWorkersStack() && |
- !subtle::Acquire_Load(&num_single_threaded_runners_) && |
+ !subtle::NoBarrier_Load(&num_single_threaded_runners_) && |
outer_->CanWorkerDetachForTesting(); |
return can_detach; |
} |