You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
16 KiB

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
  3. <title>flow_graph.h File Reference</title>
  4. <link href="doxygen.css" rel="stylesheet" type="text/css">
  5. <link href="tabs.css" rel="stylesheet" type="text/css">
  6. </head><body>
  7. <!-- Generated by Doxygen 1.4.7 -->
  8. <div class="tabs">
  9. <ul>
  10. <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
  11. <li><a href="modules.html"><span>Modules</span></a></li>
  12. <li><a href="namespaces.html"><span>Namespaces</span></a></li>
  13. <li><a href="annotated.html"><span>Classes</span></a></li>
  14. <li id="current"><a href="files.html"><span>Files</span></a></li>
  15. <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  16. </ul></div>
  17. <div class="tabs">
  18. <ul>
  19. <li><a href="files.html"><span>File&nbsp;List</span></a></li>
  20. <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
  21. </ul></div>
  22. <h1>flow_graph.h File Reference</h1>The graph related classes and functions. <a href="#_details">More...</a>
  23. <p>
  24. <table border="0" cellpadding="0" cellspacing="0">
  25. <tr><td></td></tr>
  26. <tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
  27. <tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00428.html">tbb</a></td></tr>
  28. <tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow</b></td></tr>
  29. <tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6</b></td></tr>
  30. <tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::internal</b></td></tr>
  31. <tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::graph_policy_namespace</b></td></tr>
  32. <tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><b>interface6::internal::graph_policy_namespace</b></td></tr>
  33. <tr><td colspan="2"><br><h2>Classes</h2></td></tr>
  34. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00289.html">tbb::flow::interface6::continue_msg</a></td></tr>
  35. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An empty class used for messages that mean "I'm done". <a href="a00289.html#_details">More...</a><br></td></tr>
  36. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00339.html">tbb::flow::interface6::sender&lt; T &gt;</a></td></tr>
  37. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pure virtual template class that defines a sender of messages of type T. <a href="a00339.html#_details">More...</a><br></td></tr>
  38. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00333.html">tbb::flow::interface6::receiver&lt; T &gt;</a></td></tr>
  39. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pure virtual template class that defines a receiver of messages of type T. <a href="a00333.html#_details">More...</a><br></td></tr>
  40. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00291.html">tbb::flow::interface6::continue_receiver</a></td></tr>
  41. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Base class for receivers of completion messages. <a href="a00291.html#_details">More...</a><br></td></tr>
  42. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::graph_iterator&lt; GraphContainerType, GraphNodeType &gt;</b></td></tr>
  43. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html">tbb::flow::interface6::graph</a></td></tr>
  44. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The graph class. <a href="a00300.html#_details">More...</a><br></td></tr>
  45. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::graph::run_task&lt; Body &gt;</b></td></tr>
  46. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::graph::run_and_put_task&lt; Receiver, Body &gt;</b></td></tr>
  47. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00301.html">tbb::flow::interface6::graph_node</a></td></tr>
  48. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The base of all graph nodes. <a href="a00301.html#_details">More...</a><br></td></tr>
  49. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00342.html">tbb::flow::interface6::source_node&lt; Output &gt;</a></td></tr>
  50. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An executable node that acts as a source, i.e. it has no predecessors. <a href="a00342.html#_details">More...</a><br></td></tr>
  51. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00298.html">tbb::flow::interface6::function_node&lt; Input, Output,, Allocator &gt;</a></td></tr>
  52. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Implements a function node that supports Input -&gt; Output. <a href="a00298.html#_details">More...</a><br></td></tr>
  53. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00299.html">tbb::flow::interface6::function_node&lt; Input, Output, queueing, Allocator &gt;</a></td></tr>
  54. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Implements a function node that supports Input -&gt; Output. <a href="a00299.html#_details">More...</a><br></td></tr>
  55. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00312.html">tbb::flow::interface6::multifunction_node&lt; Input, Output,, Allocator &gt;</a></td></tr>
  56. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">implements a function node that supports Input -&gt; (set of outputs) <a href="a00312.html#_details">More...</a><br></td></tr>
  57. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::multifunction_node&lt; Input, Output, queueing, Allocator &gt;</b></td></tr>
  58. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00348.html">tbb::flow::interface6::split_node&lt; TupleType, Allocator &gt;</a></td></tr>
  59. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="a00348.html">split_node</a>: accepts a tuple as input, forwards each element of the tuple to its <a href="a00348.html#_details">More...</a><br></td></tr>
  60. <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::split_node&lt; TupleType, Allocator &gt;::splitting_body</b></td></tr>
  61. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00290.html">tbb::flow::interface6::continue_node&lt; Output &gt;</a></td></tr>
  62. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Implements an executable node that supports <a class="el" href="a00289.html">continue_msg</a> -&gt; Output. <a href="a00290.html#_details">More...</a><br></td></tr>
  63. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::overwrite_node&lt; T &gt;</b></td></tr>
  64. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::write_once_node&lt; T &gt;</b></td></tr>
  65. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00274.html">tbb::flow::interface6::broadcast_node&lt; T &gt;</a></td></tr>
  66. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forwards messages of type T to all successors. <a href="a00274.html#_details">More...</a><br></td></tr>
  67. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00275.html">tbb::flow::interface6::buffer_node&lt; T, A &gt;</a></td></tr>
  68. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forwards messages in arbitrary order. <a href="a00275.html#_details">More...</a><br></td></tr>
  69. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::buffer_node&lt; T, A &gt;::buffer_operation</b></td></tr>
  70. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00325.html">tbb::flow::interface6::queue_node&lt; T, A &gt;</a></td></tr>
  71. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forwards messages in FIFO order. <a href="a00325.html#_details">More...</a><br></td></tr>
  72. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00340.html">tbb::flow::interface6::sequencer_node&lt; T, A &gt;</a></td></tr>
  73. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forwards messages in sequence order. <a href="a00340.html#_details">More...</a><br></td></tr>
  74. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00324.html">tbb::flow::interface6::priority_queue_node&lt; T, Compare, A &gt;</a></td></tr>
  75. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forwards messages in priority order. <a href="a00324.html#_details">More...</a><br></td></tr>
  76. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html">tbb::flow::interface6::limiter_node&lt; T &gt;</a></td></tr>
  77. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forwards messages only if the threshold has not been reached. <a href="a00304.html#_details">More...</a><br></td></tr>
  78. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::join_node&lt; OutputTuple, reserving &gt;</b></td></tr>
  79. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::join_node&lt; OutputTuple, queueing &gt;</b></td></tr>
  80. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::join_node&lt; OutputTuple, tag_matching &gt;</b></td></tr>
  81. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::or_node&lt; InputTuple &gt;</b></td></tr>
  82. <tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
  83. <tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>concurrency</b> { <b>unlimited</b> = 0,
  84. <b>serial</b> = 1
  85. }</td></tr>
  86. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An enumeration the provides the two most common concurrency levels: unlimited and serial. <br></td></tr>
  87. <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
  88. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="85817bf15a96ff32fac6240629ef3f84"></a><!-- doxytag: member="flow_graph.h::combine_tasks" ref="85817bf15a96ff32fac6240629ef3f84" args="(tbb::task *left, tbb::task *right)" -->
  89. static <a class="el" href="a00349.html">tbb::task</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::combine_tasks</b> (<a class="el" href="a00349.html">tbb::task</a> *left, <a class="el" href="a00349.html">tbb::task</a> *right)</td></tr>
  90. <tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="511941e0793451ab18c6ccf489a67e47"></a><!-- doxytag: member="flow_graph.h::make_edge" ref="511941e0793451ab18c6ccf489a67e47" args="(sender&lt; T &gt; &amp;p, receiver&lt; T &gt; &amp;s)" -->
  91. template&lt;typename T&gt; </td></tr>
  92. <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00431.html#511941e0793451ab18c6ccf489a67e47">tbb::flow::interface6::make_edge</a> (sender&lt; T &gt; &amp;p, receiver&lt; T &gt; &amp;s)</td></tr>
  93. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Makes an edge between a single predecessor and a single successor. <br></td></tr>
  94. <tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="15f0356fd7bcade4868d3b083ea671c2"></a><!-- doxytag: member="flow_graph.h::remove_edge" ref="15f0356fd7bcade4868d3b083ea671c2" args="(sender&lt; T &gt; &amp;p, receiver&lt; T &gt; &amp;s)" -->
  95. template&lt;typename T&gt; </td></tr>
  96. <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00431.html#15f0356fd7bcade4868d3b083ea671c2">tbb::flow::interface6::remove_edge</a> (sender&lt; T &gt; &amp;p, receiver&lt; T &gt; &amp;s)</td></tr>
  97. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Makes an edge between a single predecessor and a single successor. <br></td></tr>
  98. <tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="c8a3ee78426f0aa4df0c5a5e4bcd53e1"></a><!-- doxytag: member="flow_graph.h::copy_body" ref="c8a3ee78426f0aa4df0c5a5e4bcd53e1" args="(Node &amp;n)" -->
  99. template&lt;typename Body, typename Node&gt; </td></tr>
  100. <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">Body&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00431.html#c8a3ee78426f0aa4df0c5a5e4bcd53e1">tbb::flow::interface6::copy_body</a> (Node &amp;n)</td></tr>
  101. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a copy of the body from a function or continue node. <br></td></tr>
  102. <tr><td colspan="2"><br><h2>Variables</h2></td></tr>
  103. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dadcbaae98368798c745eb0d16e0760e"></a><!-- doxytag: member="flow_graph.h::SUCCESSFULLY_ENQUEUED" ref="dadcbaae98368798c745eb0d16e0760e" args="" -->
  104. static <a class="el" href="a00349.html">tbb::task</a> *const&nbsp;</td><td class="memItemRight" valign="bottom"><b>tbb::flow::interface6::SUCCESSFULLY_ENQUEUED</b> = (task *)-1</td></tr>
  105. </table>
  106. <hr><a name="_details"></a><h2>Detailed Description</h2>
  107. The graph related classes and functions.
  108. <p>
  109. There are some applications that best express dependencies as messages passed between nodes in a graph. These messages may contain data or simply act as signals that a predecessors has completed. The graph class and its associated node classes can be used to express such applcations. <hr>
  110. <p></p>
  111. Copyright &copy; 2005-2013 Intel Corporation. All Rights Reserved.
  112. <p></p>
  113. Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
  114. registered trademarks or trademarks of Intel Corporation or its
  115. subsidiaries in the United States and other countries.
  116. <p></p>
  117. * Other names and brands may be claimed as the property of others.