vt::messaging::DependentSendChain struct final

A sequenced chain of sends ordered by termination detection.

Public static functions

static void mergeChainStep(DependentSendChain& a, DependentSendChain& b, EpochType new_epoch, PendingSend&& link)
Add a task that is dependent on two DependentSendChain instances.

Constructors, destructors, conversion operators

DependentSendChain()
DependentSendChain(const DependentSendChain&) deleted
DependentSendChain(DependentSendChain&&) defaulted
~DependentSendChain() defaulted

Public functions

void add(EpochType new_epoch, PendingSend&& link)
Add a task to the chain for work.
void done()
Indicate that the chain is complete and should be reset.
auto isTerminated() -> bool
Check if the chain has terminated.
auto operator=(const DependentSendChain&) -> DependentSendChain& deleted
auto operator=(DependentSendChain&&) -> DependentSendChain& defaulted

Function documentation

static void vt::messaging::DependentSendChain::mergeChainStep(DependentSendChain& a, DependentSendChain& b, EpochType new_epoch, PendingSend&& link)

Add a task that is dependent on two DependentSendChain instances.

Parameters
in the first DependentSendChain
in the second DependentSendChain
new_epoch in the epoch the task is being added to
link in the PendingSend to release when complete

vt::messaging::DependentSendChain::DependentSendChain(const DependentSendChain&) deleted

This structure is move-only and cannot be copied by design

void vt::messaging::DependentSendChain::add(EpochType new_epoch, PendingSend&& link)

Add a task to the chain for work.

Parameters
new_epoch in the epoch the task is being added to
link in the PendingSend to release when complete

Add a task to the chain of work to be run in the specified epoch, with subsequent tasks dependent on all work occurring in the specified epoch

bool vt::messaging::DependentSendChain::isTerminated()

Check if the chain has terminated.

Returns whether the chain has terminated