9#include <oneapi/tbb/parallel_for_each.h>
19template <
class F,
class... Ts>
auto run_async(F &&action, Ts &&...params) {
20 return std::async(std::launch::async, std::forward<F>(action), std::forward<Ts>(params)...);
30template <
class Index,
class UnaryFunction>
32 auto range = std::vector<size_t>(last - first + 1);
33 std::iota(range.begin(), range.end(), first);
34 tbb::parallel_for_each(range.begin(), range.end(), std::move(func));
43template <
class T,
class UnaryPredicate>
45 auto index_mutex = std::mutex{};
46 auto result = std::vector<size_t>{};
47 parallel_for(
size_t{0}, data.size() - 1, [&](
size_t index) {
48 if (pred(data[index])) {
49 auto lock = std::unique_lock{index_mutex};
50 result.emplace_back(index);
Top-level namespace for Health-GPS Core C++ API.
Definition analysis.h:7
auto find_index_of_all(const T &data, UnaryPredicate pred)
Finds index of all occurrences in a container.
Definition thread_util.h:44
auto run_async(F &&action, Ts &&...params)
Run a given function asynchronous.
Definition thread_util.h:19
auto parallel_for(Index first, Index last, UnaryFunction func)
Parallel for each over an indexed accessed containers.
Definition thread_util.h:31
@ result
Simulation result message.