diff --git a/modules/core/src/parallel_pthreads.cpp b/modules/core/src/parallel_pthreads.cpp index 96ddfe7ea6..321a8331c3 100644 --- a/modules/core/src/parallel_pthreads.cpp +++ b/modules/core/src/parallel_pthreads.cpp @@ -206,7 +206,6 @@ private: pthread_mutex_t m_manager_access_mutex; static const char m_env_name[]; - static const unsigned int m_default_number_of_threads; work_load m_work_load; @@ -223,14 +222,6 @@ private: const char ThreadManager::m_env_name[] = "OPENCV_FOR_THREADS_NUM"; -#ifdef ANDROID -// many modern phones/tables have 4-core CPUs. Let's use no more -// than 2 threads by default not to overheat the devices -const unsigned int ThreadManager::m_default_number_of_threads = 2; -#else -const unsigned int ThreadManager::m_default_number_of_threads = 8; -#endif - ForThread::~ForThread() { if(m_state == eFTStarted) @@ -534,7 +525,15 @@ void ThreadManager::setNumOfThreads(size_t n) size_t ThreadManager::defaultNumberOfThreads() { - unsigned int result = m_default_number_of_threads; +#ifdef ANDROID + // many modern phones/tables have 4-core CPUs. Let's use no more + // than 2 threads by default not to overheat the devices + const unsigned int default_number_of_threads = 2; +#else + const unsigned int default_number_of_threads = (unsigned int)std::max(1, cv::getNumberOfCPUs()); +#endif + + unsigned int result = default_number_of_threads; char * env = getenv(m_env_name);