diff --git a/framework/cybertron/scheduler/scheduler.cpp b/framework/cybertron/scheduler/scheduler.cpp index 6fd55448fe560de53d10cd5da5a784433bb2d75c..f1d016c8269fbb58621327ce9c997a1fbe96dbb3 100644 --- a/framework/cybertron/scheduler/scheduler.cpp +++ b/framework/cybertron/scheduler/scheduler.cpp @@ -130,7 +130,13 @@ bool Scheduler::CreateTask(std::function&& func, return true; } -// TODO(xinjiankang) +bool Scheduler::NotifyTask(uint64_t task_id) const { + if (stop_) { + return true; + } + return proc_balancer_->NotifyProcessor(task_id); +} + bool Scheduler::RemoveTask(const std::string& name) { if (stop_) { return true; diff --git a/framework/cybertron/scheduler/scheduler.h b/framework/cybertron/scheduler/scheduler.h index da9e033a44c61b848f5149269d0c58ad8b63a1ae..776865f5d864ea3233e66855c124f09030dc37e3 100644 --- a/framework/cybertron/scheduler/scheduler.h +++ b/framework/cybertron/scheduler/scheduler.h @@ -57,6 +57,7 @@ class Scheduler { bool CreateTask(std::function&& func, const std::string& name, std::shared_ptr visitor = nullptr); bool RemoveTask(const std::string& name); + bool NotifyTask(uint64_t task_id) const; void PrintStatistics(); void ShutDown(); static uint32_t ProcessorNum() { return processor_num_; } diff --git a/framework/cybertron/task/task_manager.h b/framework/cybertron/task/task_manager.h index e1b35f8c79d0341e20ab2ce4e9c855157df5751d..a8b7aa19d914d4177e8f8a63181e69f953f84e78 100644 --- a/framework/cybertron/task/task_manager.h +++ b/framework/cybertron/task/task_manager.h @@ -21,7 +21,7 @@ #include #include "cybertron/base/bounded_queue.h" -#include "cybertron/scheduler/proc_balancer.h" +#include "cybertron/scheduler/scheduler.h" namespace apollo { namespace cybertron { @@ -38,7 +38,7 @@ class TaskManager { std::bind(std::forward(func), std::forward(args)...)); task_queue_->Enqueue([task]() { (*task)(); }); for (auto& task : tasks_) { - scheduler::ProcBalancer::Instance()->NotifyProcessor(task); + scheduler::Scheduler::Instance()->NotifyTask(task); } std::future res(task->get_future()); return res;