24template<
int32_t max_successors_=4>
39 void reset(
void) noexcept { m_predecessor_count_ = 0; m_successor_count_ = 0; }
60 void dag_node_completed_(
hxtask_queue* q_,
bool is_cancelled_);
62 int32_t m_predecessor_count_;
63 int32_t m_successor_count_;
64 edge_t_ m_successors_[max_successors_];
67#include "detail/hxtask_dag_node.inl"
hxtask_dag_node<max_successors> - A hxtask subclass that implements DAG dependency tracking as a laye...
Definition hxtask_dag_node.hpp:25
hxtask_dag_node(void)
Constructs a node with no predecessors or successors.
void on_completion(hxtask_queue *q_) override
Propagates successful completion to successors.
Definition hxtask_dag_node.hpp:43
void on_cancel(hxtask_queue *q_) override
Cancels all successors.
Definition hxtask_dag_node.hpp:51
void add_successor(hxtask_dag_node *successor_, int priority_=0)
Records a dependency: successor runs after this node completes, enqueued at priority.
void reset(void) noexcept
Clears predecessors and successors.
Definition hxtask_dag_node.hpp:39
void on_failure(hxtask_queue *q_) override
Cancels all successors.
Definition hxtask_dag_node.hpp:47
hxtask - Pure virtual base class for operations to be performed on a different thread or at a later t...
Definition hxtask.hpp:23
friend class hxtask_queue
Definition hxtask.hpp:52
#define hxattr_nonnull(...)
hxattr_nonnull - Indicates that a function has args that should not be null.
Definition hxsettings.h:97
Provides a priority queue of tasks and a worker thread pool.