提交 e9dcb4c5 编写于 作者: A azural 提交者: fengqikai1414

framework: Fix crash during shutdown

上级 15342adb
......@@ -130,7 +130,13 @@ bool Scheduler::CreateTask(std::function<void()>&& 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;
......
......@@ -57,6 +57,7 @@ class Scheduler {
bool CreateTask(std::function<void()>&& func, const std::string& name,
std::shared_ptr<DataVisitorBase> 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_; }
......
......@@ -21,7 +21,7 @@
#include <string>
#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<F>(func), std::forward<Args>(args)...));
task_queue_->Enqueue([task]() { (*task)(); });
for (auto& task : tasks_) {
scheduler::ProcBalancer::Instance()->NotifyProcessor(task);
scheduler::Scheduler::Instance()->NotifyTask(task);
}
std::future<return_type> res(task->get_future());
return res;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册