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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>tbb::flow::interface6::limiter_node&lt; T &gt; Class Template Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li id="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
<li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
</ul></div>
<div class="nav">
<a class="el" href="a00428.html">tbb</a>::<b>flow</b>::<b>interface6</b>::<a class="el" href="a00304.html">limiter_node</a></div>
<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.
<a href="#_details">More...</a>
<p>
<code>#include &lt;flow_graph.h&gt;</code>
<p>
<p>Inheritance diagram for tbb::flow::interface6::limiter_node&lt; T &gt;:
<p><center><img src="a00304.png" usemap="#tbb::flow::interface6::limiter_node< T >_map" border="0" alt=""></center>
<map name="tbb::flow::interface6::limiter_node< T >_map">
<area href="a00301.html" alt="tbb::flow::interface6::graph_node" shape="rect" coords="0,0,226,24">
<area href="a00333.html" alt="tbb::flow::interface6::receiver< T >" shape="rect" coords="236,0,462,24">
<area href="a00339.html" alt="tbb::flow::interface6::sender< T >" shape="rect" coords="472,0,698,24">
</map>
<a href="a00079.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
<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="" -->
typedef T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#035196d3c9240ef041f528ebcde8baa7">input_type</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The input type of this receiver. <br></td></tr>
<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="" -->
typedef T&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#6e67fc480147c0b88a483b85db6457b0">output_type</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The output type of this sender. <br></td></tr>
<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="" -->
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>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The predecessor type for this node. <br></td></tr>
<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="" -->
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>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The successor type for this node. <br></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<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)" -->
&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>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <br></td></tr>
<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)" -->
&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>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <br></td></tr>
<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)" -->
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>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Replace the current successor with this new successor. <br></td></tr>
<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>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes a successor from this node. <a href="#275e328063c121b3e506ccef2a825d28"></a><br></td></tr>
<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)" -->
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>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes src from the list of cached predecessors. <br></td></tr>
<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)" -->
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>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Removes src from the list of cached predecessors. <br></td></tr>
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<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="" -->
internal::decrementer&lt; <a class="el" href="a00304.html">limiter_node</a>&lt;<br>
T &gt; &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#a3344b2461966631b6ee34b79fb105c7">decrement</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The internal receiver&lt; continue_msg &gt; that decrements the count. <br></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<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)" -->
<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>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Puts an item to this receiver. <br></td></tr>
<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="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>reset</b> ()</td></tr>
<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="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>reset_receiver</b> ()</td></tr>
<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<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="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::forward_task_bypass&lt; limiter_node&lt; T &gt; &gt;</b></td></tr>
<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="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::decrementer&lt; limiter_node&lt; T &gt; &gt;</b></td></tr>
<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="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00304.html#621bab40a858d214db69ef08d88b67c1">run_and_put_task</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">put item to successor; return task to run the successor if possible. <br></td></tr>
<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="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::broadcast_cache</b></td></tr>
<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="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>internal::round_robin_cache</b></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;typename T&gt;<br>
class tbb::flow::interface6::limiter_node&lt; T &gt;</h3>
Forwards messages only if the threshold has not been reached.
<p>
This node forwards items until its threshold is reached. It contains no buffering. If the downstream node rejects, the message is dropped.
<p>
<hr><h2>Member Function Documentation</h2>
<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)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="a00304.html">tbb::flow::interface6::limiter_node</a>&lt; T &gt;::remove_successor </td>
<td>(</td>
<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>
<td class="paramname"> <em>r</em> </td>
<td>&nbsp;)&nbsp;</td>
<td width="100%"><code> [inline, virtual]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Removes a successor from this node.
<p>
r.remove_predecessor(*this) is also called.
<p>
Implements <a class="el" href="a00339.html#82f363bfb1738bb8789e167590b10ef9">tbb::flow::interface6::sender&lt; T &gt;</a>.
</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="a00385.html">flow_graph.h</a></ul>
<hr>
<p></p>
Copyright &copy; 2005-2013 Intel Corporation. All Rights Reserved.
<p></p>
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
registered trademarks or trademarks of Intel Corporation or its
subsidiaries in the United States and other countries.
<p></p>
* Other names and brands may be claimed as the property of others.