Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Unified Diff: base/task_scheduler/scheduler_worker_pool_impl.cc

Issue 2235283002: Fix incorrect memory barrier usage I previously asked to be introduced. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/message_loop/message_loop.cc ('k') | base/task_scheduler/task_tracker.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
« no previous file with comments | « base/message_loop/message_loop.cc ('k') | base/task_scheduler/task_tracker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698