dispenso 1.4.1
A library for task parallelism
Loading...
Searching...
No Matches
dispenso::Node Class Reference

#include <graph.h>

Inherited by dispenso::BiPropNode.

Public Member Functions

 Node (const Node &)=delete
 
 Node (Node &&other) noexcept
 
template<typename... Ns>
void dependsOn (Ns &... nodes)
 
void run () const
 
template<class F >
void forEachDependent (F &&func) const
 
template<class F >
void forEachDependent (F &&func)
 
size_t numPredecessors () const
 
bool isCompleted () const
 
bool setIncomplete () const
 
void setCompleted () const
 

Protected Member Functions

template<class F , class X = std::enable_if_t<!std::is_base_of<Node, F>::value, void>>
 Node (F &&f)
 

Friends

template<class N >
class SubgraphT
 
template<typename G >
void setAllNodesIncomplete (const G &graph)
 

Detailed Description

Class to store task with dependencies

Examples
graph_example.cpp.

Definition at line 229 of file graph.h.

Constructor & Destructor Documentation

◆ Node() [1/2]

dispenso::Node::Node ( Node && other)
inlinenoexcept

Move constructor.

Definition at line 235 of file graph.h.

◆ ~Node()

dispenso::Node::~Node ( )
inline

Definition at line 244 of file graph.h.

◆ Node() [2/2]

template<class F , class X = std::enable_if_t<!std::is_base_of<Node, F>::value, void>>
dispenso::Node::Node ( F && f)
inlineprotected

Construct a Node with a functor.

Parameters
fThe functor to execute when the node runs.

Definition at line 330 of file graph.h.

Member Function Documentation

◆ dependsOn()

template<typename... Ns>
void dispenso::Node::dependsOn ( Ns &... nodes)
inline

Make this node depends on nodes. This is not concurrency safe.

Parameters
nodespredecessors of the node
Examples
graph_example.cpp.

Definition at line 255 of file graph.h.

◆ forEachDependent() [1/2]

template<class F >
void dispenso::Node::forEachDependent ( F && func)
inline

apply an func to each dependent of the node This is not concurrency safe.

Parameters
funca functor with signature void(Node&)

Definition at line 283 of file graph.h.

◆ forEachDependent() [2/2]

template<class F >
void dispenso::Node::forEachDependent ( F && func) const
inline

apply an func to each dependent of the node

Parameters
funca functor with signature void(const Node&)

Definition at line 272 of file graph.h.

◆ isCompleted()

bool dispenso::Node::isCompleted ( ) const
inline

Return true if node is completed. New node always incomplete. If node was invoked it become completed. this state can be changed by calling setIncomplete() Concurrency safe.

Definition at line 300 of file graph.h.

◆ numPredecessors()

size_t dispenso::Node::numPredecessors ( ) const
inline

Return the number of nodes this node depends on. Concurrency safe.

Definition at line 291 of file graph.h.

◆ run()

void dispenso::Node::run ( ) const
inline

Invoke the type-erased functor. Change competed state of the node to "Incomplete". Concurrency safe.

Definition at line 262 of file graph.h.

◆ setCompleted()

void dispenso::Node::setCompleted ( ) const
inline

Mark node completed. Concurrency safe. This methods should never be called concurrent to when the graph execution is happening

Definition at line 323 of file graph.h.

◆ setIncomplete()

bool dispenso::Node::setIncomplete ( ) const
inline

Mark node incomplete. (that allows reevaluate this node again). Concurrency safe. This methods should never be called concurrent to when the graph execution is happening

Returns
true if state was changed.
Examples
graph_example.cpp.

Definition at line 310 of file graph.h.

Friends And Related Symbol Documentation

◆ SubgraphT

template<class N >
friend class SubgraphT
friend

Definition at line 359 of file graph.h.


The documentation for this class was generated from the following file: