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.

160 lines
14 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::limiter_node&lt; T &gt; Class Template 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="a00304.html">limiter_node</a></div>
  25. <h1>tbb::flow::interface6::limiter_node&lt; T &gt; Class Template Reference</h1><!-- doxytag: class="tbb::flow::interface6::limiter_node" --><!-- doxytag: inherits="tbb::flow::interface6::graph_node,tbb::flow::interface6::receiver,tbb::flow::interface6::sender" -->Forwards messages only if the threshold has not been reached.
  26. <a href="#_details">More...</a>
  27. <p>
  28. <code>#include &lt;flow_graph.h&gt;</code>
  29. <p>
  30. <p>Inheritance diagram for tbb::flow::interface6::limiter_node&lt; T &gt;:
  31. <p><center><img src="a00304.png" usemap="#tbb::flow::interface6::limiter_node< T >_map" border="0" alt=""></center>
  32. <map name="tbb::flow::interface6::limiter_node< T >_map">
  33. <area href="a00301.html" alt="tbb::flow::interface6::graph_node" shape="rect" coords="0,0,226,24">
  34. <area href="a00333.html" alt="tbb::flow::interface6::receiver< T >" shape="rect" coords="236,0,462,24">
  35. <area href="a00339.html" alt="tbb::flow::interface6::sender< T >" shape="rect" coords="472,0,698,24">
  36. </map>
  37. <a href="a00079.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
  38. <tr><td></td></tr>
  39. <tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
  40. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="035196d3c9240ef041f528ebcde8baa7"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::input_type" ref="035196d3c9240ef041f528ebcde8baa7" args="" -->
  41. typedef T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#035196d3c9240ef041f528ebcde8baa7">input_type</a></td></tr>
  42. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The input type of this receiver. <br></td></tr>
  43. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6e67fc480147c0b88a483b85db6457b0"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::output_type" ref="6e67fc480147c0b88a483b85db6457b0" args="" -->
  44. typedef T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#6e67fc480147c0b88a483b85db6457b0">output_type</a></td></tr>
  45. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The output type of this sender. <br></td></tr>
  46. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f89fcf44f38eb33f965ee5362d3e68e9"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::predecessor_type" ref="f89fcf44f38eb33f965ee5362d3e68e9" args="" -->
  47. typedef <a class="el" href="a00339.html">sender</a>&lt; <a class="el" href="a00304.html#035196d3c9240ef041f528ebcde8baa7">input_type</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#f89fcf44f38eb33f965ee5362d3e68e9">predecessor_type</a></td></tr>
  48. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The predecessor type for this node. <br></td></tr>
  49. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e8945e4dd6ea759ff9e4735da13f12ef"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::successor_type" ref="e8945e4dd6ea759ff9e4735da13f12ef" args="" -->
  50. typedef <a class="el" href="a00333.html">receiver</a>&lt; <a class="el" href="a00304.html#6e67fc480147c0b88a483b85db6457b0">output_type</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#e8945e4dd6ea759ff9e4735da13f12ef">successor_type</a></td></tr>
  51. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The successor type for this node. <br></td></tr>
  52. <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
  53. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="831b06576f46fe2bf3ed0f86b793c1b2"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::limiter_node" ref="831b06576f46fe2bf3ed0f86b793c1b2" args="(graph &amp;g, size_t threshold, int num_decrement_predecessors=0)" -->
  54. &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#831b06576f46fe2bf3ed0f86b793c1b2">limiter_node</a> (<a class="el" href="a00300.html">graph</a> &amp;g, size_t threshold, int num_decrement_predecessors=0)</td></tr>
  55. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <br></td></tr>
  56. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="83d3ab884543b070ee5b345a87f241fa"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::limiter_node" ref="83d3ab884543b070ee5b345a87f241fa" args="(const limiter_node &amp;src)" -->
  57. &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#83d3ab884543b070ee5b345a87f241fa">limiter_node</a> (const <a class="el" href="a00304.html">limiter_node</a> &amp;src)</td></tr>
  58. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <br></td></tr>
  59. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c76561d8d871b4769876988a4de12a9b"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::register_successor" ref="c76561d8d871b4769876988a4de12a9b" args="(receiver&lt; output_type &gt; &amp;r)" -->
  60. bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#c76561d8d871b4769876988a4de12a9b">register_successor</a> (<a class="el" href="a00333.html">receiver</a>&lt; <a class="el" href="a00304.html#6e67fc480147c0b88a483b85db6457b0">output_type</a> &gt; &amp;r)</td></tr>
  61. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Replace the current successor with this new successor. <br></td></tr>
  62. <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#275e328063c121b3e506ccef2a825d28">remove_successor</a> (<a class="el" href="a00333.html">receiver</a>&lt; <a class="el" href="a00304.html#6e67fc480147c0b88a483b85db6457b0">output_type</a> &gt; &amp;r)</td></tr>
  63. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes a successor from this node. <a href="#275e328063c121b3e506ccef2a825d28"></a><br></td></tr>
  64. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="de70a0e88ce7655d8c14b6af57f7496f"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::register_predecessor" ref="de70a0e88ce7655d8c14b6af57f7496f" args="(predecessor_type &amp;src)" -->
  65. bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#de70a0e88ce7655d8c14b6af57f7496f">register_predecessor</a> (<a class="el" href="a00339.html">predecessor_type</a> &amp;src)</td></tr>
  66. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes src from the list of cached predecessors. <br></td></tr>
  67. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c530e7b469454e2340460795f2da3317"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::remove_predecessor" ref="c530e7b469454e2340460795f2da3317" args="(predecessor_type &amp;src)" -->
  68. bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#c530e7b469454e2340460795f2da3317">remove_predecessor</a> (<a class="el" href="a00339.html">predecessor_type</a> &amp;src)</td></tr>
  69. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes src from the list of cached predecessors. <br></td></tr>
  70. <tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
  71. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a3344b2461966631b6ee34b79fb105c7"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::decrement" ref="a3344b2461966631b6ee34b79fb105c7" args="" -->
  72. internal::decrementer&lt; <a class="el" href="a00304.html">limiter_node</a>&lt;<br>
  73. T &gt; &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#a3344b2461966631b6ee34b79fb105c7">decrement</a></td></tr>
  74. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The internal receiver&lt; continue_msg &gt; that decrements the count. <br></td></tr>
  75. <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
  76. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ca2ff9f3379b8b5a3de2ababbca4a476"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::try_put_task" ref="ca2ff9f3379b8b5a3de2ababbca4a476" args="(const T &amp;t)" -->
  77. <a class="el" href="a00349.html">task</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#ca2ff9f3379b8b5a3de2ababbca4a476">try_put_task</a> (const T &amp;t)</td></tr>
  78. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Puts an item to this receiver. <br></td></tr>
  79. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8b9c771bcf9137829f0e5b73044f8b7e"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::reset" ref="8b9c771bcf9137829f0e5b73044f8b7e" args="()" -->
  80. void&nbsp;</td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
  81. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="68591a3690d26ade0610ddd6f3e076c5"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::reset_receiver" ref="68591a3690d26ade0610ddd6f3e076c5" args="()" -->
  82. void&nbsp;</td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()</td></tr>
  83. <tr><td colspan="2"><br><h2>Friends</h2></td></tr>
  84. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="74b341552e1314d2e318be9066a1d151"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::internal::forward_task_bypass&lt; limiter_node&lt; T &gt; &gt;" ref="74b341552e1314d2e318be9066a1d151" args="" -->
  85. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::forward_task_bypass&lt; limiter_node&lt; T &gt; &gt;</b></td></tr>
  86. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b43677b60c786d1071a7efd6f195c3be"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::internal::decrementer&lt; limiter_node&lt; T &gt; &gt;" ref="b43677b60c786d1071a7efd6f195c3be" args="" -->
  87. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::decrementer&lt; limiter_node&lt; T &gt; &gt;</b></td></tr>
  88. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="621bab40a858d214db69ef08d88b67c1"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::run_and_put_task" ref="621bab40a858d214db69ef08d88b67c1" args="" -->
  89. class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#621bab40a858d214db69ef08d88b67c1">run_and_put_task</a></td></tr>
  90. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">put item to successor; return task to run the successor if possible. <br></td></tr>
  91. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e4fa30d87bc0bfa80942f97a8d58f1bd"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::internal::broadcast_cache" ref="e4fa30d87bc0bfa80942f97a8d58f1bd" args="" -->
  92. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
  93. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="31ba00ea3e3e5a421b38840bd0dc2589"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::internal::round_robin_cache" ref="31ba00ea3e3e5a421b38840bd0dc2589" args="" -->
  94. class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
  95. </table>
  96. <hr><a name="_details"></a><h2>Detailed Description</h2>
  97. <h3>template&lt;typename T&gt;<br>
  98. class tbb::flow::interface6::limiter_node&lt; T &gt;</h3>
  99. Forwards messages only if the threshold has not been reached.
  100. <p>
  101. This node forwards items until its threshold is reached. It contains no buffering. If the downstream node rejects, the message is dropped.
  102. <p>
  103. <hr><h2>Member Function Documentation</h2>
  104. <a class="anchor" name="275e328063c121b3e506ccef2a825d28"></a><!-- doxytag: member="tbb::flow::interface6::limiter_node::remove_successor" ref="275e328063c121b3e506ccef2a825d28" args="(receiver&lt; output_type &gt; &amp;r)" -->
  105. <div class="memitem">
  106. <div class="memproto">
  107. <div class="memtemplate">
  108. template&lt;typename T&gt; </div>
  109. <table class="memname">
  110. <tr>
  111. <td class="memname">bool <a class="el" href="a00304.html">tbb::flow::interface6::limiter_node</a>&lt; T &gt;::remove_successor </td>
  112. <td>(</td>
  113. <td class="paramtype"><a class="el" href="a00333.html">receiver</a>&lt; <a class="el" href="a00304.html#6e67fc480147c0b88a483b85db6457b0">output_type</a> &gt; &amp;&nbsp;</td>
  114. <td class="paramname"> <em>r</em> </td>
  115. <td>&nbsp;)&nbsp;</td>
  116. <td width="100%"><code> [inline, virtual]</code></td>
  117. </tr>
  118. </table>
  119. </div>
  120. <div class="memdoc">
  121. <p>
  122. Removes a successor from this node.
  123. <p>
  124. r.remove_predecessor(*this) is also called.
  125. <p>
  126. Implements <a class="el" href="a00339.html#82f363bfb1738bb8789e167590b10ef9">tbb::flow::interface6::sender&lt; T &gt;</a>.
  127. </div>
  128. </div><p>
  129. <hr>The documentation for this class was generated from the following file:<ul>
  130. <li><a class="el" href="a00385.html">flow_graph.h</a></ul>
  131. <hr>
  132. <p></p>
  133. Copyright &copy; 2005-2013 Intel Corporation. All Rights Reserved.
  134. <p></p>
  135. Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
  136. registered trademarks or trademarks of Intel Corporation or its
  137. subsidiaries in the United States and other countries.
  138. <p></p>
  139. * Other names and brands may be claimed as the property of others.