1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- saved from url=(0014)about:internet -->
<html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="DC.Type" content="reference">
<meta name="DC.Title" content="parallel_invoke Template Function">
<meta name="DC.subject" content="parallel_invoke Template Function">
<meta name="keywords" content="parallel_invoke Template Function">
<meta name="DC.Relation" scheme="URI" content="../../reference/algorithms.htm">
<meta name="DC.Format" content="XHTML">
<meta name="DC.Identifier" content="parallel_invoke_func">
<meta name="DC.Language" content="en-US">
<link rel="stylesheet" type="text/css" href="../../intel_css_styles.css">
<title>parallel_invoke Template Function</title>
<xml>
<MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr>
<MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr>
<MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr>
</xml>
</head>
<body id="parallel_invoke_func">
<!-- ==============(Start:NavScript)================= -->
<script src="..\..\NavScript.js" language="JavaScript1.2" type="text/javascript"></script>
<script language="JavaScript1.2" type="text/javascript">WriteNavLink(2);</script>
<!-- ==============(End:NavScript)================= -->
<a name="parallel_invoke_func"><!-- --></a>
<h1 class="topictitle1">parallel_invoke Template Function</h1>
<div>
<div class="section"><h2 class="sectiontitle">Summary</h2> Template function that evaluates several functions in parallel. </div>
<div class="section"><h2 class="sectiontitle">Header</h2>
<pre>#include "tbb/parallel_invoke.h"</pre>
</div>
<div class="section"><h2 class="sectiontitle">Syntax</h2>
<pre>template<typename Func0, typename Func1>
void parallel_invoke(const Func0& f0, const Func1& f1);
template<typename Func0, typename Func1, typename Func2>
void parallel_invoke(const Func0& f0, const Func1& f1, const Func2& f2);
template<typename Func0, typename Func1, ..., typename Func9>
void parallel_invoke(const Func0& f0, const Func1& f1, ..., const Func9& f9);
</pre><div class="Note"><h3 class="NoteTipHead">
Note</h3><p>When support for C++11 rvalue references become prevalent, the formal parameters may change to rvalue references.</p>
</div></div>
<div class="section"><h2 class="sectiontitle">Description</h2> <p>The expression parallel_invoke(f<sub>0</sub>,f<sub>1</sub>,...,f<sub>k</sub>) evaluates
f<sub>0</sub>(), f<sub>1</sub>(), ..., f<sub>k</sub>() possibly in parallel. There can be from 2
to 10 arguments. Each argument must have a type for which <samp class="codeph">operator()</samp> is
defined. Typically the arguments are either function objects or pointers to functions. Return
values are ignored.</p>
</div>
<div class="section"><h2 class="sectiontitle">Example</h2> <p>The following example evaluates <samp class="codeph">f(), g(),</samp> and
<samp class="codeph">h()</samp> in parallel. Notice how <samp class="codeph">g</samp> and <samp class="codeph">h</samp> are
function objects that can hold local state.</p>
<pre>#include "tbb/parallel_invoke.h"
using namespace tbb;
void f();
extern void bar(int);
class MyFunctor {
int arg;
public:
MyFunctor(int a) : arg(a) {}
void operator()() const {bar(arg);}
};
void RunFunctionsInParallel() {
MyFunctor g(2);
MyFunctor h(3);
tbb::parallel_invoke(f, g, h );
}
</pre>
</div>
<div class="section"><h2 class="sectiontitle">Example with Lambda Expressions</h2> <p>Here is the previous example rewritten with C++11 lambda expressions, which generate function objects.</p>
<pre>#include "tbb/parallel_invoke.h"
using namespace tbb;
void f();
extern void bar(int);
void RunFunctionsInParallel() {
tbb::parallel_invoke(f, []{bar(2);}, []{bar(3);} );
}
</pre>
</div>
</div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="../../reference/algorithms.htm">Algorithms</a></div>
</div>
<div></div>
</body>
</html>
|