17 #ifndef CYBER_SCHEDULER_SCHEDULER_H_ 18 #define CYBER_SCHEDULER_SCHEDULER_H_ 28 #include <unordered_map> 31 #include "cyber/proto/choreography_conf.pb.h" 53 using apollo::cyber::proto::InnerThread;
56 class ProcessorContext;
64 bool CreateTask(std::function<
void()>&&
func,
const std::string& name,
65 std::shared_ptr<DataVisitorBase> visitor =
nullptr);
71 virtual bool RemoveTask(
const std::string& name) = 0;
76 virtual bool DispatchTask(
const std::shared_ptr<CRoutine>&) = 0;
83 const std::unordered_map<std::string, InnerThread>& confs) {
94 std::unordered_map<uint64_t, std::shared_ptr<CRoutine>>
id_cr_;
95 std::vector<std::shared_ptr<ProcessorContext>>
pctxs_;
110 #endif // CYBER_SCHEDULER_SCHEDULER_H_ static Scheduler * Instance()
void(* func)(void *)
Definition: routine_context.h:41
Definition: croutine.h:40
void SetInnerThreadAttr(const std::string &name, std::thread *thr)
AtomicHashMap< uint64_t, MutexWrapper * > id_map_mutex_
Definition: scheduler.h:91
uint32_t TaskPoolSize()
Definition: scheduler.h:69
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
Definition: scheduler.h:58
Definition: atomic_rw_lock.h:36
std::vector< std::shared_ptr< ProcessorContext > > pctxs_
Definition: scheduler.h:95
uint32_t proc_num_
Definition: scheduler.h:101
Definition: routine_factory.h:33
virtual bool RemoveTask(const std::string &name)=0
AtomicRWLock id_cr_lock_
Definition: scheduler.h:90
void ProcessLevelResourceControl()
A implementation of lock-free fixed size hash map.
Definition: atomic_hash_map.h:40
Definition: rw_lock_guard.h:35
std::unordered_map< uint64_t, std::shared_ptr< CRoutine > > id_cr_
Definition: scheduler.h:94
std::mutex cr_wl_mtx_
Definition: scheduler.h:92
virtual ~Scheduler()
Definition: scheduler.h:60
Definition: data_visitor_base.h:33
virtual bool RemoveCRoutine(uint64_t crid)=0
bool CreateTask(const RoutineFactory &factory, const std::string &name)
Scheduler()
Definition: scheduler.h:88
uint32_t task_pool_size_
Definition: scheduler.h:102
void SetInnerThreadConfs(const std::unordered_map< std::string, InnerThread > &confs)
Definition: scheduler.h:82
std::vector< std::shared_ptr< Processor > > processors_
Definition: scheduler.h:96
std::atomic< bool > stop_
Definition: scheduler.h:103
virtual bool DispatchTask(const std::shared_ptr< CRoutine > &)=0
std::string process_level_cpuset_
Definition: scheduler.h:100
bool NotifyTask(uint64_t crid)
std::unordered_map< std::string, InnerThread > inner_thr_confs_
Definition: scheduler.h:98
virtual bool NotifyProcessor(uint64_t crid)=0