diff --git a/modules/core/src/mathfuncs.cpp b/modules/core/src/mathfuncs.cpp index a4e5263aa8..18bdf6ce4d 100644 --- a/modules/core/src/mathfuncs.cpp +++ b/modules/core/src/mathfuncs.cpp @@ -43,6 +43,7 @@ #include "precomp.hpp" #include "opencl_kernels_core.hpp" +#include #include #include #include "mathfuncs.hpp" @@ -2119,8 +2120,8 @@ const double* getExpTab64f() const float* getExpTab32f() { static float CV_DECL_ALIGNED(64) expTab_f[EXPTAB_MASK+1]; - static volatile bool expTab_f_initialized = false; - if (!expTab_f_initialized) + static std::atomic expTab_f_initialized(false); + if (!expTab_f_initialized.load()) { for( int j = 0; j <= EXPTAB_MASK; j++ ) expTab_f[j] = (float)expTab[j]; @@ -2401,8 +2402,8 @@ const double* getLogTab64f() const float* getLogTab32f() { static float CV_DECL_ALIGNED(64) logTab_f[(LOGTAB_MASK+1)*2]; - static volatile bool logTab_f_initialized = false; - if (!logTab_f_initialized) + static std::atomic logTab_f_initialized(false); + if (!logTab_f_initialized.load()) { for (int j = 0; j < (LOGTAB_MASK+1)*2; j++) logTab_f[j] = (float)logTab[j];