From 945dd6dbd5988617acb63d7087278aa6b42cc68e Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Fri, 11 Sep 2015 14:52:30 -0700 Subject: [PATCH] C++11 version of Platform::CpuCores(). --- platform/platform.cpp | 7 +++++++ platform/platform.hpp | 2 +- platform/platform_android.cpp | 15 --------------- platform/platform_ios.mm | 8 -------- platform/platform_linux.cpp | 8 -------- platform/platform_mac.mm | 18 ------------------ platform/platform_tizen.cpp | 9 --------- platform/platform_win.cpp | 10 ---------- 8 files changed, 8 insertions(+), 69 deletions(-) diff --git a/platform/platform.cpp b/platform/platform.cpp index d9afabb865..292b75f43f 100644 --- a/platform/platform.cpp +++ b/platform/platform.cpp @@ -9,6 +9,7 @@ #include "base/logging.hpp" #include "std/target_os.hpp" +#include "std/thread.hpp" #include @@ -145,3 +146,9 @@ void Platform::SetResourceDir(string const & path) { m_resourcesDir = my::AddSlashIfNeeded(path); } + +unsigned Platform::CpuCores() const +{ + unsigned const cores = thread::hardware_concurrency(); + return cores > 0 ? cores : 1; +} diff --git a/platform/platform.hpp b/platform/platform.hpp index cf249ef4c2..16d369d27b 100644 --- a/platform/platform.hpp +++ b/platform/platform.hpp @@ -173,7 +173,7 @@ public: void RunAsync(TFunctor const & fn, Priority p = EPriorityDefault); //@} - int CpuCores() const; + unsigned CpuCores() const; void GetFontNames(FilesList & res) const; diff --git a/platform/platform_android.cpp b/platform/platform_android.cpp index 51a3ec0d58..ca366a4095 100644 --- a/platform/platform_android.cpp +++ b/platform/platform_android.cpp @@ -217,21 +217,6 @@ void Platform::GetFilesByRegExp(string const & directory, string const & regexp, pl::EnumerateFilesByRegExp(directory, regexp, res); } -int Platform::CpuCores() const -{ - static long const numCPU = sysconf(_SC_NPROCESSORS_CONF); - - // for debugging only. _SC_NPROCESSORS_ONLN could change, so - // we should test whether _SC_NPROCESSORS_CONF could change too - - long const newNumCPU = sysconf(_SC_NPROCESSORS_CONF); - - if (newNumCPU != numCPU) - LOG(LWARNING, ("initially retrived", numCPU, "and now got", newNumCPU, "processors")); - - return (numCPU > 1 ? static_cast(numCPU) : 1); -} - int Platform::VideoMemoryLimit() const { return 10 * 1024 * 1024; diff --git a/platform/platform_ios.mm b/platform/platform_ios.mm index 9e95dfd48b..78358700ea 100644 --- a/platform/platform_ios.mm +++ b/platform/platform_ios.mm @@ -68,14 +68,6 @@ ModelReader * Platform::GetReader(string const & file, string const & searchScop READER_CHUNK_LOG_SIZE, READER_CHUNK_LOG_COUNT); } -int Platform::CpuCores() const -{ - NSInteger const numCPU = [[NSProcessInfo processInfo] activeProcessorCount]; - if (numCPU >= 1) - return numCPU; - return 1; -} - int Platform::VideoMemoryLimit() const { return 8 * 1024 * 1024; diff --git a/platform/platform_linux.cpp b/platform/platform_linux.cpp index d111f7c7a7..f8b5b5622d 100644 --- a/platform/platform_linux.cpp +++ b/platform/platform_linux.cpp @@ -90,14 +90,6 @@ Platform::Platform() LOG(LDEBUG, ("Client ID:", UniqueClientId())); } -int Platform::CpuCores() const -{ - const long numCPU = sysconf(_SC_NPROCESSORS_ONLN); - if (numCPU >= 1) - return static_cast(numCPU); - return 1; -} - string Platform::UniqueClientId() const { string machineFile = "/var/lib/dbus/machine-id"; diff --git a/platform/platform_mac.mm b/platform/platform_mac.mm index 72de53b855..6267c9aa34 100644 --- a/platform/platform_mac.mm +++ b/platform/platform_mac.mm @@ -82,24 +82,6 @@ Platform::Platform() [pool release]; } -int Platform::CpuCores() const -{ - int mib[2], numCPU = 0; - size_t len = sizeof(numCPU); - mib[0] = CTL_HW; - mib[1] = HW_AVAILCPU; - sysctl(mib, 2, &numCPU, &len, NULL, 0); - if (numCPU >= 1) - return numCPU; - // second try - mib[1] = HW_NCPU; - len = sizeof(numCPU); - sysctl(mib, 2, &numCPU, &len, NULL, 0); - if (numCPU >= 1) - return numCPU; - return 1; -} - string Platform::UniqueClientId() const { io_registry_entry_t ioRegistryRoot = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/"); diff --git a/platform/platform_tizen.cpp b/platform/platform_tizen.cpp index 65112bc256..58ea92257d 100644 --- a/platform/platform_tizen.cpp +++ b/platform/platform_tizen.cpp @@ -48,15 +48,6 @@ void Platform::MkDir(string const & dirName) const Tizen::Io::Directory::Create(dirName.c_str(), true); } -int Platform::CpuCores() const -{ - /// @todo - // const long numCPU = sysconf(_SC_NPROCESSORS_ONLN); - // if (numCPU >= 1) - // return static_cast(numCPU); - return 1; -} - string Platform::UniqueClientId() const { Tizen::App::App * pApp = Tizen::App::App::GetInstance(); diff --git a/platform/platform_win.cpp b/platform/platform_win.cpp index de63036a1b..b69ea1ff89 100644 --- a/platform/platform_win.cpp +++ b/platform/platform_win.cpp @@ -117,16 +117,6 @@ Platform::EError Platform::GetFileType(string const & path, EFileType & type) return ERR_OK; } -int Platform::CpuCores() const -{ - SYSTEM_INFO sysinfo; - GetSystemInfo(&sysinfo); - DWORD numCPU = sysinfo.dwNumberOfProcessors; - if (numCPU >= 1) - return static_cast(numCPU); - return 1; -} - string Platform::UniqueClientId() const { return "@TODO";