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.

279 lines
18 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>tbb::flow::interface6::graph Class 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 id="current"><a href="annotated.html"><span>Classes</span></a></li>
  14. <li><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="annotated.html"><span>Class&nbsp;List</span></a></li>
  20. <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
  21. <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  22. </ul></div>
  23. <div class="nav">
  24. <a class="el" href="a00428.html">tbb</a>::<b>flow</b>::<b>interface6</b>::<a class="el" href="a00300.html">graph</a></div>
  25. <h1>tbb::flow::interface6::graph Class Reference</h1><!-- doxytag: class="tbb::flow::interface6::graph" -->The graph class.
  26. <a href="#_details">More...</a>
  27. <p>
  28. <code>#include &lt;flow_graph.h&gt;</code>
  29. <p>
  30. <a href="a00059.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
  31. <tr><td></td></tr>
  32. <tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
  33. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ec5db0443a1320850f8fa05b5eed2ea4"></a><!-- doxytag: member="tbb::flow::interface6::graph::iterator" ref="ec5db0443a1320850f8fa05b5eed2ea4" args="" -->
  34. typedef graph_iterator&lt; <a class="el" href="a00300.html">graph</a>,<br>
  35. <a class="el" href="a00301.html">graph_node</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>iterator</b></td></tr>
  36. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3e677faaf2d66684cd32ccf5492dda4e"></a><!-- doxytag: member="tbb::flow::interface6::graph::const_iterator" ref="3e677faaf2d66684cd32ccf5492dda4e" args="" -->
  37. typedef graph_iterator&lt; const <br>
  38. <a class="el" href="a00300.html">graph</a>, const <a class="el" href="a00301.html">graph_node</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>const_iterator</b></td></tr>
  39. <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
  40. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4ab3d4b5208ece28c4c3ced647e26e12"></a><!-- doxytag: member="tbb::flow::interface6::graph::graph" ref="4ab3d4b5208ece28c4c3ced647e26e12" args="()" -->
  41. &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#4ab3d4b5208ece28c4c3ced647e26e12">graph</a> ()</td></tr>
  42. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructs a graph with isolated <a class="el" href="a00352.html">task_group_context</a>. <br></td></tr>
  43. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="104d4f3775f596b43177c29e6b7b7656"></a><!-- doxytag: member="tbb::flow::interface6::graph::graph" ref="104d4f3775f596b43177c29e6b7b7656" args="(task_group_context &amp;use_this_context)" -->
  44. &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#104d4f3775f596b43177c29e6b7b7656">graph</a> (<a class="el" href="a00353.html">task_group_context</a> &amp;use_this_context)</td></tr>
  45. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructs a graph with use_this_context as context. <br></td></tr>
  46. <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#8a7d424c0616a1c37a908ead182e2fe5">~graph</a> ()</td></tr>
  47. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroys the graph. <a href="#8a7d424c0616a1c37a908ead182e2fe5"></a><br></td></tr>
  48. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#a993b789d1e488e0c3929135beae560e">increment_wait_count</a> ()</td></tr>
  49. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Used to register that an external entity may still interact with the graph. <a href="#a993b789d1e488e0c3929135beae560e"></a><br></td></tr>
  50. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#29b85506870f13a884a21655aec2a65d">decrement_wait_count</a> ()</td></tr>
  51. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deregisters an external entity that may have interacted with the graph. <a href="#29b85506870f13a884a21655aec2a65d"></a><br></td></tr>
  52. <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Receiver, typename Body&gt; </td></tr>
  53. <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00300.html#50a7938df01b6148ab2c0696835f002e">run</a> (Receiver &amp;r, Body body)</td></tr>
  54. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Spawns a task that runs a body and puts its output to a specific receiver. <a href="#50a7938df01b6148ab2c0696835f002e"></a><br></td></tr>
  55. <tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Body&gt; </td></tr>
  56. <tr><td class="memTemplItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00300.html#c1145b00e063793a7e7bf994d202c7a0">run</a> (Body body)</td></tr>
  57. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Spawns a task that runs a function object. <a href="#c1145b00e063793a7e7bf994d202c7a0"></a><br></td></tr>
  58. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#a66b0020f7514b86d030fa8aea073d37">wait_for_all</a> ()</td></tr>
  59. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls. <a href="#a66b0020f7514b86d030fa8aea073d37"></a><br></td></tr>
  60. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7f4e3ae90811a5d8b597146b5b586d10"></a><!-- doxytag: member="tbb::flow::interface6::graph::root_task" ref="7f4e3ae90811a5d8b597146b5b586d10" args="()" -->
  61. <a class="el" href="a00349.html">task</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#7f4e3ae90811a5d8b597146b5b586d10">root_task</a> ()</td></tr>
  62. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the root task of the graph. <br></td></tr>
  63. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b028cb585ec21e5de523d0075d0fa880"></a><!-- doxytag: member="tbb::flow::interface6::graph::begin" ref="b028cb585ec21e5de523d0075d0fa880" args="()" -->
  64. iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#b028cb585ec21e5de523d0075d0fa880">begin</a> ()</td></tr>
  65. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">start iterator <br></td></tr>
  66. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a167c62511ddacaa152daa64ab2d6aac"></a><!-- doxytag: member="tbb::flow::interface6::graph::end" ref="a167c62511ddacaa152daa64ab2d6aac" args="()" -->
  67. iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#a167c62511ddacaa152daa64ab2d6aac">end</a> ()</td></tr>
  68. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">end iterator <br></td></tr>
  69. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f63c3b7d03098b57fc16b71c57b303e5"></a><!-- doxytag: member="tbb::flow::interface6::graph::begin" ref="f63c3b7d03098b57fc16b71c57b303e5" args="() const " -->
  70. const_iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#f63c3b7d03098b57fc16b71c57b303e5">begin</a> () const </td></tr>
  71. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">start const iterator <br></td></tr>
  72. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="907bd06606818c36f52420fe8d469d35"></a><!-- doxytag: member="tbb::flow::interface6::graph::end" ref="907bd06606818c36f52420fe8d469d35" args="() const " -->
  73. const_iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#907bd06606818c36f52420fe8d469d35">end</a> () const </td></tr>
  74. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">end const iterator <br></td></tr>
  75. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e183dfc3f89dc8f57c06ba165fb89f66"></a><!-- doxytag: member="tbb::flow::interface6::graph::cbegin" ref="e183dfc3f89dc8f57c06ba165fb89f66" args="() const " -->
  76. const_iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#e183dfc3f89dc8f57c06ba165fb89f66">cbegin</a> () const </td></tr>
  77. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">start const iterator <br></td></tr>
  78. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4866156e6a31d0399b61c6eb82ee81fd"></a><!-- doxytag: member="tbb::flow::interface6::graph::cend" ref="4866156e6a31d0399b61c6eb82ee81fd" args="() const " -->
  79. const_iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#4866156e6a31d0399b61c6eb82ee81fd">cend</a> () const </td></tr>
  80. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">end const iterator <br></td></tr>
  81. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="227ea140dc2c68f79a4e5a34a8367b58"></a><!-- doxytag: member="tbb::flow::interface6::graph::is_cancelled" ref="227ea140dc2c68f79a4e5a34a8367b58" args="()" -->
  82. bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00300.html#227ea140dc2c68f79a4e5a34a8367b58">is_cancelled</a> ()</td></tr>
  83. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return status of graph execution <br></td></tr>
  84. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e48ff6b3b7433ce6ee2c2518b79d1a7c"></a><!-- doxytag: member="tbb::flow::interface6::graph::exception_thrown" ref="e48ff6b3b7433ce6ee2c2518b79d1a7c" args="()" -->
  85. bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>exception_thrown</b> ()</td></tr>
  86. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="11cdff0b9201b4b9fa173265a8d7b9f4"></a><!-- doxytag: member="tbb::flow::interface6::graph::reset" ref="11cdff0b9201b4b9fa173265a8d7b9f4" args="()" -->
  87. void&nbsp;</td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
  88. <tr><td colspan="2"><br><h2>Friends</h2></td></tr>
  89. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9143fb4f732c36d5587e467e21a0e7f6"></a><!-- doxytag: member="tbb::flow::interface6::graph::graph_node" ref="9143fb4f732c36d5587e467e21a0e7f6" args="" -->
  90. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>graph_node</b></td></tr>
  91. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="621c092f8466e55743ceef04b0bde9ce"></a><!-- doxytag: member="tbb::flow::interface6::graph::graph_iterator" ref="621c092f8466e55743ceef04b0bde9ce" args="" -->
  92. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>graph_iterator</b></td></tr>
  93. <tr><td colspan="2"><br><h2>Classes</h2></td></tr>
  94. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>run_and_put_task</b></td></tr>
  95. <tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><b>run_task</b></td></tr>
  96. </table>
  97. <hr><a name="_details"></a><h2>Detailed Description</h2>
  98. The graph class.
  99. <p>
  100. This class serves as a handle to the graph
  101. <p>
  102. <hr><h2>Constructor &amp; Destructor Documentation</h2>
  103. <a class="anchor" name="8a7d424c0616a1c37a908ead182e2fe5"></a><!-- doxytag: member="tbb::flow::interface6::graph::~graph" ref="8a7d424c0616a1c37a908ead182e2fe5" args="()" -->
  104. <div class="memitem">
  105. <div class="memproto">
  106. <table class="memname">
  107. <tr>
  108. <td class="memname">tbb::flow::interface6::graph::~graph </td>
  109. <td>(</td>
  110. <td class="paramname"> </td>
  111. <td>&nbsp;)&nbsp;</td>
  112. <td width="100%"><code> [inline]</code></td>
  113. </tr>
  114. </table>
  115. </div>
  116. <div class="memdoc">
  117. <p>
  118. Destroys the graph.
  119. <p>
  120. Calls wait_for_all, then destroys the root task and context.
  121. </div>
  122. </div><p>
  123. <hr><h2>Member Function Documentation</h2>
  124. <a class="anchor" name="29b85506870f13a884a21655aec2a65d"></a><!-- doxytag: member="tbb::flow::interface6::graph::decrement_wait_count" ref="29b85506870f13a884a21655aec2a65d" args="()" -->
  125. <div class="memitem">
  126. <div class="memproto">
  127. <table class="memname">
  128. <tr>
  129. <td class="memname">void tbb::flow::interface6::graph::decrement_wait_count </td>
  130. <td>(</td>
  131. <td class="paramname"> </td>
  132. <td>&nbsp;)&nbsp;</td>
  133. <td width="100%"><code> [inline]</code></td>
  134. </tr>
  135. </table>
  136. </div>
  137. <div class="memdoc">
  138. <p>
  139. Deregisters an external entity that may have interacted with the graph.
  140. <p>
  141. The graph will not return from wait_for_all until all the number of decrement_wait_count calls matches the number of increment_wait_count calls.
  142. </div>
  143. </div><p>
  144. <a class="anchor" name="a993b789d1e488e0c3929135beae560e"></a><!-- doxytag: member="tbb::flow::interface6::graph::increment_wait_count" ref="a993b789d1e488e0c3929135beae560e" args="()" -->
  145. <div class="memitem">
  146. <div class="memproto">
  147. <table class="memname">
  148. <tr>
  149. <td class="memname">void tbb::flow::interface6::graph::increment_wait_count </td>
  150. <td>(</td>
  151. <td class="paramname"> </td>
  152. <td>&nbsp;)&nbsp;</td>
  153. <td width="100%"><code> [inline]</code></td>
  154. </tr>
  155. </table>
  156. </div>
  157. <div class="memdoc">
  158. <p>
  159. Used to register that an external entity may still interact with the graph.
  160. <p>
  161. The graph will not return from wait_for_all until a matching number of decrement_wait_count calls is made.
  162. </div>
  163. </div><p>
  164. <a class="anchor" name="c1145b00e063793a7e7bf994d202c7a0"></a><!-- doxytag: member="tbb::flow::interface6::graph::run" ref="c1145b00e063793a7e7bf994d202c7a0" args="(Body body)" -->
  165. <div class="memitem">
  166. <div class="memproto">
  167. <div class="memtemplate">
  168. template&lt;typename Body&gt; </div>
  169. <table class="memname">
  170. <tr>
  171. <td class="memname">void tbb::flow::interface6::graph::run </td>
  172. <td>(</td>
  173. <td class="paramtype">Body&nbsp;</td>
  174. <td class="paramname"> <em>body</em> </td>
  175. <td>&nbsp;)&nbsp;</td>
  176. <td width="100%"><code> [inline]</code></td>
  177. </tr>
  178. </table>
  179. </div>
  180. <div class="memdoc">
  181. <p>
  182. Spawns a task that runs a function object.
  183. <p>
  184. The task is spawned as a child of the graph. This is useful for running tasks that need to block a <a class="el" href="a00300.html#a66b0020f7514b86d030fa8aea073d37">wait_for_all()</a> on the graph. For example a one-off source.
  185. </div>
  186. </div><p>
  187. <a class="anchor" name="50a7938df01b6148ab2c0696835f002e"></a><!-- doxytag: member="tbb::flow::interface6::graph::run" ref="50a7938df01b6148ab2c0696835f002e" args="(Receiver &amp;r, Body body)" -->
  188. <div class="memitem">
  189. <div class="memproto">
  190. <div class="memtemplate">
  191. template&lt;typename Receiver, typename Body&gt; </div>
  192. <table class="memname">
  193. <tr>
  194. <td class="memname">void tbb::flow::interface6::graph::run </td>
  195. <td>(</td>
  196. <td class="paramtype">Receiver &amp;&nbsp;</td>
  197. <td class="paramname"> <em>r</em>, </td>
  198. </tr>
  199. <tr>
  200. <td class="paramkey"></td>
  201. <td></td>
  202. <td class="paramtype">Body&nbsp;</td>
  203. <td class="paramname"> <em>body</em></td><td>&nbsp;</td>
  204. </tr>
  205. <tr>
  206. <td></td>
  207. <td>)</td>
  208. <td></td><td></td><td width="100%"><code> [inline]</code></td>
  209. </tr>
  210. </table>
  211. </div>
  212. <div class="memdoc">
  213. <p>
  214. Spawns a task that runs a body and puts its output to a specific receiver.
  215. <p>
  216. The task is spawned as a child of the graph. This is useful for running tasks that need to block a <a class="el" href="a00300.html#a66b0020f7514b86d030fa8aea073d37">wait_for_all()</a> on the graph. For example a one-off source.
  217. </div>
  218. </div><p>
  219. <a class="anchor" name="a66b0020f7514b86d030fa8aea073d37"></a><!-- doxytag: member="tbb::flow::interface6::graph::wait_for_all" ref="a66b0020f7514b86d030fa8aea073d37" args="()" -->
  220. <div class="memitem">
  221. <div class="memproto">
  222. <table class="memname">
  223. <tr>
  224. <td class="memname">void tbb::flow::interface6::graph::wait_for_all </td>
  225. <td>(</td>
  226. <td class="paramname"> </td>
  227. <td>&nbsp;)&nbsp;</td>
  228. <td width="100%"><code> [inline]</code></td>
  229. </tr>
  230. </table>
  231. </div>
  232. <div class="memdoc">
  233. <p>
  234. Wait until graph is idle and decrement_wait_count calls equals increment_wait_count calls.
  235. <p>
  236. The waiting thread will go off and steal work while it is block in the wait_for_all.
  237. </div>
  238. </div><p>
  239. <hr>The documentation for this class was generated from the following file:<ul>
  240. <li><a class="el" href="a00385.html">flow_graph.h</a></ul>
  241. <hr>
  242. <p></p>
  243. Copyright &copy; 2005-2013 Intel Corporation. All Rights Reserved.
  244. <p></p>
  245. Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
  246. registered trademarks or trademarks of Intel Corporation or its
  247. subsidiaries in the United States and other countries.
  248. <p></p>
  249. * Other names and brands may be claimed as the property of others.