Rechecked.
diff --git a/libstdc++-v3/src/thread.cc b/libstdc++-v3/src/thread.cc index 09e7fc5..6feda4d 100644 --- a/libstdc++-v3/src/thread.cc +++ b/libstdc++-v3/src/thread.cc @@ -112,10 +112,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION unsigned int thread::hardware_concurrency() noexcept { - int __n = _GLIBCXX_NPROCS; - if (__n < 0) - __n = 0; - return __n; + int count=0; +#if defined(PTW32_VERSION) || \ + (defined(__MINGW64_VERSION_MAJOR) && defined(_POSIX_THREADS)) || \ + defined(__hpux) + count=pthread_num_processors_np(); +#elif defined(__APPLE__) || defined(__FreeBSD__) + size_t size=sizeof(count); + sysctlbyname("hw.ncpu", &count, &size, NULL, 0); +#elif defined(_SC_NPROCESSORS_ONLN) + count=sysconf(_SC_NPROCESSORS_ONLN); +#elif defined(_GLIBCXX_USE_GET_NPROCS) + count=_GLIBCXX_NPROCS; +#endif + return (count>0)?count:0; } _GLIBCXX_END_NAMESPACE_VERSION 2011/11/1 Paolo Carlini <pcarl...@gmail.com>: > Hi, > >> This is patch is implement the std::thread::hardware_concurrency(). >> Tested on pthreads-win32/winpthreads on windows OS, and on Linux/FreeBSD. > > Please send library patches to the library mailing list too. Also, always > parch mainline first: actually in the latter the function is alread > implemented, maybe something is missing for win32, please check, rediff, and > resend. > > Thanks > Paolo