message: Use atomic operations to modify flagNestedParallelFor
  This ensures uniform behavior on any C++11 compliant compiler
diff: # define CV_PARALLEL_FRAMEWORK "pthreads"
  #endif
  +#ifdef CV_PARALLEL_FRAMEWORK
  +#include <atomic>
  +#endif
  +
  #include "parallel_impl.hpp"
  #include "opencv2/core/detail/exception_ptr.hpp" // CV__EXCEPTION_PTR = 1 if std::exception_ptr is available
  @@ -487,20 +491,20 @@ void cv::parallel_for_(const cv::Range& range, const cv::ParallelLoopBody& body,
  return;
  #ifdef CV_PARALLEL_FRAMEWORK
  - static volatile int flagNestedParallelFor = 0;
  - bool isNotNestedRegion = flagNestedParallelFor == 0;
  + static std::atomic<bool> flagNestedParallelFor(false);
  + bool isNotNestedRegion = !flagNestedParallelFor.load();
  if (isNotNestedRegion)
  - isNotNestedRegion = CV_XADD(&flagNestedParallelFor, 1) == 0;
  + isNotNestedRegion = !flagNestedParallelFor.exchange(true);
  if (isNotNestedRegion)
  {
  try
  {
  parallel_for_impl(range, body, nstripes);
  - flagNestedParallelFor = 0;
  + flagNestedParallelFor = false;
  }
  catch (...)
  {
  - flagNestedParallelFor = 0;
  + flagNestedParallelFor = false;
  throw;
  }
  }
  