15#include <AUI/Thread/AThreadPool.h>
16#include <AUI/Traits/iterators.h>
44 template<
typename Iterator,
typename Functor>
45 auto parallel(Iterator begin, Iterator end, Functor&& functor) {
49 namespace impl::parallel {
50 template<
typename Container>
51 struct LambdaCapturer {
52 using iterator =
decltype(std::declval<Container>().begin());
54 LambdaCapturer(Container& c):
61 template<
typename Lambda>
62 auto operator<<(Lambda&& lambda) {
63 return aui::parallel(begin, end, std::forward<Lambda>(lambda));
85#define AUI_PARALLEL_MP(...) aui::impl::parallel::LambdaCapturer(__VA_ARGS__) \
86<< [&](const std::decay_t<decltype(aui::impl::parallel::LambdaCapturer(__VA_ARGS__))::iterator>& begin, \
87 const std::decay_t<decltype(aui::impl::parallel::LambdaCapturer(__VA_ARGS__))::iterator>& end)
static AThreadPool & global()
Global thread pool created with the default constructor.
auto parallel(Iterator begin, Iterator end, Functor &&functor)
Definition AThreadPool.h:260