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

Unified Diff: base/task_scheduler/scheduler_worker_pool_impl.cc

Issue 2405243003: TaskScheduler: Replace the SchedulerServiceThread with a base::Thread. (Closed)
Patch Set: self-review Created 4 years, 2 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
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 dc040301ca31af4868522b3983b112f293e0d28e..893c7de21438dbbf2adab9a3ffeb4985b8c76151 100644
--- a/base/task_scheduler/scheduler_worker_pool_impl.cc
+++ b/base/task_scheduler/scheduler_worker_pool_impl.cc
@@ -19,7 +19,6 @@
#include "base/sequenced_task_runner.h"
#include "base/single_thread_task_runner.h"
#include "base/strings/stringprintf.h"
-#include "base/task_scheduler/delayed_task_manager.h"
#include "base/task_scheduler/task_tracker.h"
#include "base/threading/platform_thread.h"
#include "base/threading/thread_local.h"
@@ -65,7 +64,7 @@ class SchedulerParallelTaskRunner : public TaskRunner {
// Post the task as part of a one-off single-task Sequence.
return worker_pool_->PostTaskWithSequence(
MakeUnique<Task>(from_here, closure, traits_, delay),
- make_scoped_refptr(new Sequence), nullptr);
+ make_scoped_refptr(new Sequence), nullptr, delay);
}
bool RunsTasksOnCurrentThread() const override {
@@ -102,7 +101,7 @@ class SchedulerSequencedTaskRunner : public SequencedTaskRunner {
// Post the task as part of |sequence_|.
return worker_pool_->PostTaskWithSequence(std::move(task), sequence_,
- nullptr);
+ nullptr, delay);
}
bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
@@ -187,7 +186,7 @@ class SchedulerWorkerPoolImpl::SchedulerSingleThreadTaskRunner :
// Post the task to be executed by |worker_| as part of |sequence_|.
return worker_pool_->PostTaskWithSequence(std::move(task), sequence_,
- worker_);
+ worker_, delay);
}
bool PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
@@ -298,12 +297,11 @@ std::unique_ptr<SchedulerWorkerPoolImpl> SchedulerWorkerPoolImpl::Create(
const SchedulerWorkerPoolParams& params,
const ReEnqueueSequenceCallback& re_enqueue_sequence_callback,
TaskTracker* task_tracker,
- DelayedTaskManager* delayed_task_manager) {
+ scoped_refptr<TaskRunner> service_thread_task_runner) {
std::unique_ptr<SchedulerWorkerPoolImpl> worker_pool(
- new SchedulerWorkerPoolImpl(params.name(),
- params.io_restriction(),
- params.suggested_reclaim_time(),
- task_tracker, delayed_task_manager));
+ new SchedulerWorkerPoolImpl(params.name(), params.io_restriction(),
+ params.suggested_reclaim_time(), task_tracker,
+ std::move(service_thread_task_runner)));
if (worker_pool->Initialize(params.priority_hint(), params.max_threads(),
re_enqueue_sequence_callback)) {
return worker_pool;
@@ -382,19 +380,24 @@ void SchedulerWorkerPoolImpl::ReEnqueueSequence(
bool SchedulerWorkerPoolImpl::PostTaskWithSequence(
std::unique_ptr<Task> task,
scoped_refptr<Sequence> sequence,
- SchedulerWorker* worker) {
+ SchedulerWorker* worker,
+ TimeDelta delay) {
robliao 2016/10/12 20:55:45 I would be okay with storing the delay on the task
fdoray 2016/10/13 13:51:29 Done. Stored the delay with Task and added TODO.
DCHECK(task);
DCHECK(sequence);
DCHECK(!worker || ContainsWorker(workers_, worker));
+ DCHECK_EQ(delay.is_zero(), task->delayed_run_time.is_null());
if (!task_tracker_->WillPostTask(task.get()))
return false;
- if (task->delayed_run_time.is_null()) {
+ if (delay.is_zero()) {
PostTaskWithSequenceNow(std::move(task), std::move(sequence), worker);
} else {
- delayed_task_manager_->AddDelayedTask(std::move(task), std::move(sequence),
- worker, this);
+ service_thread_task_runner_->PostDelayedTask(
+ FROM_HERE, Bind(&SchedulerWorkerPoolImpl::PostTaskWithSequenceNow,
+ Unretained(this), Passed(std::move(task)),
+ std::move(sequence), worker),
+ delay);
}
return true;
@@ -410,7 +413,7 @@ void SchedulerWorkerPoolImpl::PostTaskWithSequenceNow(
// Confirm that |task| is ready to run (its delayed run time is either null or
// in the past).
- DCHECK_LE(task->delayed_run_time, delayed_task_manager_->Now());
+ DCHECK_LE(task->delayed_run_time, TimeTicks::Now());
// Because |worker| belongs to this worker pool, we know that the type
// of its delegate is SchedulerWorkerDelegateImpl.
@@ -653,7 +656,7 @@ SchedulerWorkerPoolImpl::SchedulerWorkerPoolImpl(
SchedulerWorkerPoolParams::IORestriction io_restriction,
const TimeDelta& suggested_reclaim_time,
TaskTracker* task_tracker,
- DelayedTaskManager* delayed_task_manager)
+ scoped_refptr<TaskRunner> service_thread_task_runner)
: name_(name.as_string()),
io_restriction_(io_restriction),
suggested_reclaim_time_(suggested_reclaim_time),
@@ -684,9 +687,9 @@ SchedulerWorkerPoolImpl::SchedulerWorkerPoolImpl(
50,
HistogramBase::kUmaTargetedHistogramFlag)),
task_tracker_(task_tracker),
- delayed_task_manager_(delayed_task_manager) {
+ service_thread_task_runner_(std::move(service_thread_task_runner)) {
DCHECK(task_tracker_);
- DCHECK(delayed_task_manager_);
+ DCHECK(service_thread_task_runner_);
}
bool SchedulerWorkerPoolImpl::Initialize(

Powered by Google App Engine
This is Rietveld 408576698