This class is used internally by the PARAGRAPH to manage the setup of storage for the PARAGRAPH's result as well as setting up the notification flow from the internal task on each location in the PARAGRAPH gang. More...
Public Member Functions | |
result_container_base * | get_result_container (void) |
void | reset (void) |
bool | has_outstanding_consumers (void) const |
result_type | apply (task_graph &tg, bool one_sided) |
Setup the result_view and underlying result_container storage for the PARAGRAPH, and register the appropriate callback with PARAGRAPH. | |
void | set_result_impl (std::size_t, task_graph::task_id_t task_id, task_graph &tg) |
Signature for non-void return types. Redirect to the edge_container. More... | |
os_td_wait_t * | set_os_result_notifier (task_graph &tg, result_type &) |
If the return type of the paragraph is non-void, initializes an instance of one_sided_wait_td_notifier to tie parent paragraph notification to both this paragraph's dataflow and termination detection. More... | |
result_type & | finalize_result (result_type &res) |
For the primary class template, this method is an identity op. More... | |
Public Types | |
using | edge_type = Return |
using | result_type = typename result_view< edge_type >::reference |
using | tmp_result_type = result_type |
using | stored_value_t = typename df_stored_type< edge_type >::type |
using | notifier_t = boost::function< void(std::size_t, stored_value_t const &)> |
using | os_td_wait_t = one_sided_wait_td_notifier< edge_type > |
Public Attributes | |
notifier_t | m_result_notifier |
The notifier this PARAGRAPH invokes when the task marked as the result task for this location finishes execution. | |
edge_info_holder< edge_type > | m_out_edge_info |
Holds information about internal edge that is serving outgoing paragraph edge so that zero copy /move can be attempted upon exit. | |
This class is used internally by the PARAGRAPH to manage the setup of storage for the PARAGRAPH's result as well as setting up the notification flow from the internal task on each location in the PARAGRAPH gang.
void stapl::detail::result_manager< Return, b_has_span >::set_result_impl | ( | std::size_t | , |
task_graph::task_id_t | task_id, | ||
task_graph & | tg | ||
) |
Signature for non-void return types. Redirect to the edge_container.
os_td_wait_t* stapl::detail::result_manager< Return, b_has_span >::set_os_result_notifier | ( | task_graph & | tg, |
result_type & | |||
) |
If the return type of the paragraph is non-void, initializes an instance of one_sided_wait_td_notifier to tie parent paragraph notification to both this paragraph's dataflow and termination detection.
result_type& stapl::detail::result_manager< Return, b_has_span >::finalize_result | ( | result_type & | res | ) |
For the primary class template, this method is an identity op.
res | The PARAGRAPH result from this location. |