Guest User

Untitled

a guest
May 26th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. /////////////////////////////// Parallel Primitives //////////////////////////////////
  2.  
  3. /** @brief Base class for parallel data processors
  4. */
  5. class CV_EXPORTS ParallelLoopBody
  6. {
  7. public:
  8.     virtual ~ParallelLoopBody();
  9.     virtual void operator() (const Range& range) const = 0;
  10. };
  11.  
  12. /** @brief Parallel data processor
  13. */
  14. CV_EXPORTS void parallel_for_(const Range& range, const ParallelLoopBody& body, double nstripes=-1.);
  15.  
  16. class ParallelLoopBodyLambdaWrapper : public ParallelLoopBody
  17. {
  18. private:
  19.     std::function<void(const Range&)> m_functor;
  20. public:
  21.     ParallelLoopBodyLambdaWrapper(std::function<void(const Range&)> functor) :
  22.         m_functor(functor)
  23.     { }
  24.  
  25.     virtual void operator() (const cv::Range& range) const CV_OVERRIDE
  26.     {
  27.         m_functor(range);
  28.     }
  29. };
  30.  
  31. inline void parallel_for_(const Range& range, std::function<void(const Range&)> functor, double nstripes=-1.)
  32. {
  33.     parallel_for_(range, ParallelLoopBodyLambdaWrapper(functor), nstripes);
  34. }
Advertisement
Add Comment
Please, Sign In to add comment