diff --git a/algorithms_cpp/include/embb/algorithms/invoke.h b/algorithms_cpp/include/embb/algorithms/invoke.h index 10dd818..a3884a4 100644 --- a/algorithms_cpp/include/embb/algorithms/invoke.h +++ b/algorithms_cpp/include/embb/algorithms/invoke.h @@ -49,33 +49,37 @@ typedef embb::base::Function InvokeFunctionType; #ifdef DOXYGEN /** - * Spawns one to ten function objects at once and runs them in parallel. + * Spawns two to ten function objects at once and runs them in parallel. * * Blocks until all of them are done. * * \ingroup CPP_ALGORITHMS_INVOKE */ -template +template void Invoke( Function1 func1, /**< [in] First function object to invoke */ + Function2 func2, + /**< [in] Second function object to invoke */ ...); /** -* Spawns one to ten function objects at once and runs them in parallel using the +* Spawns two to ten function objects at once and runs them in parallel using the * given embb::mtapi::ExecutionPolicy. * * Blocks until all of them are done. * * \ingroup CPP_ALGORITHMS_INVOKE */ -template +template void Invoke( Function1 func1, /**< [in] Function object to invoke */ + Function2 func2, + /**< [in] Second function object to invoke */ ..., - const embb::mtapi::ExecutionPolicy & policy - /**< [in] embb::mtapi::ExecutionPolicy to use */ + const embb::tasks::ExecutionPolicy & policy + /**< [in] embb::tasks::ExecutionPolicy to use */ ); #else // DOXYGEN @@ -118,13 +122,6 @@ class TaskWrapper { }; } // namespace internal -template -void Invoke( - Function1 func1, - const embb::tasks::ExecutionPolicy& policy) { - internal::TaskWrapper wrap1(func1, policy); -} - template void Invoke( Function1 func1, @@ -290,12 +287,6 @@ template wrap10(func10, policy); } -template -void Invoke( - Function1 func1) { - Invoke(func1, embb::tasks::ExecutionPolicy()); -} - template void Invoke( Function1 func1, diff --git a/algorithms_cpp/test/invoke_test.cc b/algorithms_cpp/test/invoke_test.cc index 361e73a..1481747 100644 --- a/algorithms_cpp/test/invoke_test.cc +++ b/algorithms_cpp/test/invoke_test.cc @@ -44,7 +44,6 @@ static void Invocable10() {} void InvokeTest::Test() { using embb::algorithms::Invoke; - Invoke(&Invocable1); Invoke(&Invocable1, &Invocable2); Invoke(&Invocable1, &Invocable2, &Invocable3); Invoke(&Invocable1, &Invocable2, &Invocable3, &Invocable4); @@ -61,4 +60,24 @@ void InvokeTest::Test() { &Invocable6, &Invocable7, &Invocable8, &Invocable9); Invoke(&Invocable1, &Invocable2, &Invocable3, &Invocable4, &Invocable5, &Invocable6, &Invocable7, &Invocable8, &Invocable9, &Invocable10); + + embb::tasks::ExecutionPolicy policy; + Invoke(&Invocable1, &Invocable2, policy); + Invoke(&Invocable1, &Invocable2, &Invocable3, policy); + Invoke(&Invocable1, &Invocable2, &Invocable3, &Invocable4, policy); + Invoke(&Invocable1, &Invocable2, &Invocable3, &Invocable4, &Invocable5, + policy); + Invoke(&Invocable1, &Invocable2, &Invocable3, &Invocable4, &Invocable5, + &Invocable6, policy); + Invoke(&Invocable1, &Invocable2, &Invocable3, &Invocable4, &Invocable5, + &Invocable6, &Invocable7, policy); + Invoke(&Invocable1, &Invocable2, &Invocable3, &Invocable4, &Invocable5, + &Invocable6, &Invocable7, &Invocable8, policy); + Invoke(&Invocable1, &Invocable2, &Invocable3, &Invocable4, &Invocable5, + &Invocable6, &Invocable7, &Invocable8, &Invocable9, policy); + Invoke(&Invocable1, &Invocable2, &Invocable3, &Invocable4, &Invocable5, + &Invocable6, &Invocable7, &Invocable8, &Invocable9, policy); + Invoke(&Invocable1, &Invocable2, &Invocable3, &Invocable4, &Invocable5, + &Invocable6, &Invocable7, &Invocable8, &Invocable9, &Invocable10, + policy); }