20 template <
class F, 
class... Ts> 
auto run_async(F &&action, Ts &&...params) {
 
   21     return std::async(std::launch::async, std::forward<F>(action), std::forward<Ts>(params)...);
 
   33 template <
class Policy, 
class Index, 
class UnaryFunction>
 
   34 auto parallel_for(Policy &&policy, Index first, Index last, UnaryFunction func) {
 
   35     auto range = std::vector<size_t>(last - first + 1);
 
   36     std::iota(range.begin(), range.end(), first);
 
   37     std::for_each(policy, range.begin(), range.end(), std::move(func));
 
   48 template <
class Policy, 
class T, 
class UnaryPredicate>
 
   50     auto index_mutex = std::mutex{};
 
   51     auto result = std::vector<size_t>{};
 
   52     parallel_for(policy, 
size_t{0}, data.size() - 1, [&](
size_t index) {
 
   53         if (pred(data[index])) {
 
   54             auto lock = std::unique_lock{index_mutex};
 
   55             result.emplace_back(index);
 
Top-level namespace for Health-GPS Core C++ API.
Definition: analysis.h:7
 
auto run_async(F &&action, Ts &&...params)
Run a given function asynchronous.
Definition: thread_util.h:20
 
auto find_index_of_all(Policy &&policy, const T &data, UnaryPredicate pred)
Finds index of all occurrences in a container.
Definition: thread_util.h:49
 
constexpr auto execution_policy
Default execution policy.
Definition: thread_util.h:12
 
auto parallel_for(Policy &&policy, Index first, Index last, UnaryFunction func)
Parallel for each over an indexed accessed containers.
Definition: thread_util.h:34
 
@ result
Simulation result message.