16 #ifndef vtkSMPToolsImpl_h
17 #define vtkSMPToolsImpl_h
19 #include "vtkCommonCoreModule.h"
25 #define VTK_SMP_MAX_BACKENDS_NB 4
27 #define VTK_SMP_BACKEND_SEQUENTIAL 0
28 #define VTK_SMP_BACKEND_STDTHREAD 1
29 #define VTK_SMP_BACKEND_TBB 2
30 #define VTK_SMP_BACKEND_OPENMP 3
47 #if VTK_SMP_DEFAULT_IMPLEMENTATION_SEQUENTIAL
49 #elif VTK_SMP_DEFAULT_IMPLEMENTATION_STDTHREAD
51 #elif VTK_SMP_DEFAULT_IMPLEMENTATION_TBB
53 #elif VTK_SMP_DEFAULT_IMPLEMENTATION_OPENMP
57 template <BackendType Backend>
62 void Initialize(
int numThreads = 0);
65 int GetEstimatedNumberOfThreads();
77 template <
typename FunctorInternal>
81 template <
typename InputIt,
typename OutputIt,
typename Functor>
82 void Transform(InputIt inBegin, InputIt inEnd, OutputIt outBegin, Functor transform);
85 template <
typename InputIt1,
typename InputIt2,
typename OutputIt,
typename Functor>
87 InputIt1 inBegin1, InputIt1 inEnd, InputIt2 inBegin2, OutputIt outBegin, Functor transform);
90 template <
typename Iterator,
typename T>
91 void Fill(Iterator begin, Iterator end,
const T&
value);
94 template <
typename RandomAccessIterator>
95 void Sort(RandomAccessIterator begin, RandomAccessIterator end);
98 template <
typename RandomAccessIterator,
typename Compare>
99 void Sort(RandomAccessIterator begin, RandomAccessIterator end, Compare comp);
103 : NestedActivated(true)
110 : NestedActivated(other.NestedActivated)
111 , IsParallel(other.IsParallel.
load())
118 this->NestedActivated = other.NestedActivated;
119 this->IsParallel = other.IsParallel.load();
123 bool NestedActivated =
true;
124 std::atomic<bool> IsParallel{
false };
void(*)(void *, vtkIdType, vtkIdType, vtkIdType) ExecuteFunctorPtrType
void Sort(RandomIt bitr, RandomIt eitr, BackToFront< T > &me)
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.