cppassist  1.0.0.f4fab4f962ff
C++ sanctuary for small but powerful and frequently required, stand alone features.
parallelfor.h
Go to the documentation of this file.
1 
2 #pragma once
3 
4 
5 #include <functional>
6 #include <vector>
7 
8 #include <cppassist/cppassist_api.h>
9 
10 
11 namespace cppassist
12 {
13 
14 
22 template <typename T>
23 struct identity
24 {
25  typedef T type;
26 };
27 
35 CPPASSIST_API size_t getNumberOfThreads();
36 
53 template<typename T>
54 void forEach(T start, T end, typename identity<std::function<void(T)>>::type callback, bool parallelize = true);
55 
70 template<typename T>
71 void parallelFor(T start, T end, typename identity<std::function<void(T)>>::type callback);
72 
82 template<typename T>
83 void parallelFor(const std::vector<T> & elements, typename identity<std::function<void(const T & element)>>::type callback);
84 
94 template<typename T>
95 void parallelFor(std::vector<T> & elements, typename identity<std::function<void(T & element)>>::type callback);
96 
111 template<typename T>
112 void sequentialFor(T start, T end, typename identity<std::function<void(T)>>::type callback);
113 
123 template<typename T>
124 void sequentialFor(const std::vector<T> & elements, typename identity<std::function<void(const T & element)>>::type callback);
125 
135 template<typename T>
136 void sequentialFor(std::vector<T> & elements, typename identity<std::function<void(T & element)>>::type callback);
137 
138 
139 } // namespace cppassist
140 
141 
void parallelFor(T start, T end, typename identity< std::function< void(T)>>::type callback)
Call a function on each iteration of a loop (parallelized in threads)
Definition: parallelfor.inl:27
Definition: ArgumentParser.h:12
Helper class to deduce function types with lambdas.
Definition: parallelfor.h:23
CPPASSIST_API size_t getNumberOfThreads()
Get optimal number of threads for parallelization.
void sequentialFor(T start, T end, typename identity< std::function< void(T)>>::type callback)
Call a function on each iteration of a loop (sequential)
Definition: parallelfor.inl:78
T type
Definition: parallelfor.h:25
void forEach(T start, T end, typename identity< std::function< void(T)>>::type callback, bool parallelize=true)
Call a function on each iteration of a loop.
Definition: parallelfor.inl:18