Merge pull request #17492 from cyyever:fix_data_race

pull/17526/head
Alexander Alekhin 5 years ago
commit 55ca0fcc27
  1. 9
      modules/core/src/precomp.hpp

@ -364,15 +364,8 @@ bool __termination; // skip some cleanups, because process is terminating
cv::Mutex& getInitializationMutex();
// TODO Memory barriers?
#define CV_SINGLETON_LAZY_INIT_(TYPE, INITIALIZER, RET_VALUE) \
static TYPE* volatile instance = NULL; \
if (instance == NULL) \
{ \
cv::AutoLock lock(cv::getInitializationMutex()); \
if (instance == NULL) \
instance = INITIALIZER; \
} \
static TYPE* const instance = INITIALIZER; \
return RET_VALUE;
#define CV_SINGLETON_LAZY_INIT(TYPE, INITIALIZER) CV_SINGLETON_LAZY_INIT_(TYPE, INITIALIZER, instance)

Loading…
Cancel
Save