Symphony Of Empires
parallel_for.hpp
Go to the documentation of this file.
1 // Eng3D - General purpouse game engine
2 // Copyright (C) 2022, Eng3D contributors
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <https://www.gnu.org/licenses/>.
16 //
17 // ----------------------------------------------------------------------------
18 // Name:
19 // parallel_for.hpp
20 //
21 // Abstract:
22 // Does important stuff.
23 // ----------------------------------------------------------------------------
24 
25 #pragma once
26 
27 #include <ranges>
28 #include <tbb/blocked_range.hpp>
29 
30 namespace tbb {
31  template<typename T, typename F>
32  void parallel_for(T range, F&& func)
33  {
34  func(std::ranges::make_iterator_range(range.first, range.last));
35  }
36 
37  template<typename It, typename F>
38  void parallel_for(It first, It last, F&& func)
39  {
40  for(auto it = first; it != last; it++)
41  func(*it);
42  }
43 }
void parallel_for(T range, F &&func)