diff --git a/lib/pls/include/pls/internal/scheduling/abstract_task.h b/lib/pls/include/pls/internal/scheduling/abstract_task.h index 33c374b..bfeee46 100644 --- a/lib/pls/include/pls/internal/scheduling/abstract_task.h +++ b/lib/pls/include/pls/internal/scheduling/abstract_task.h @@ -10,12 +10,23 @@ namespace pls { namespace internal { namespace scheduling { class abstract_task { + struct id { + uint32_t id_; + bool auto_generated_; + + explicit id(uint32_t id, bool auto_generated=true): id_{id}, auto_generated_{auto_generated} {}; + + bool operator==(const abstract_task::id& other) const { + return id_ == other.id_ && auto_generated_ == other.auto_generated_; + } + }; + int depth_; - int unique_id_; + abstract_task::id unique_id_; abstract_task* child_task_; public: - abstract_task(int depth, int unique_id): + abstract_task(int depth, abstract_task::id unique_id): depth_{depth}, unique_id_{unique_id}, child_task_{nullptr} {} @@ -25,7 +36,7 @@ namespace pls { abstract_task* child() { return child_task_; } void set_depth(int depth) { depth_ = depth; } - int depth() { return depth_; } + int depth() const { return depth_; } protected: virtual bool internal_stealing(abstract_task* other_task) = 0; virtual bool split_task(base::spin_lock* lock) = 0;