On 1 November 2011 11:54, Marc Glisse wrote: > On Tue, 1 Nov 2011, niXman wrote: > >> 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; > > Er, the macro _GLIBCXX_NPROCS already handles the case > sysconf(_SC_NPROCESSORS_ONLN). It looks like you actually want to remove the > macro _GLIBCXX_NPROCS completely.
Right, I already handled the case of using sysconf. I'm going to veto this patch in its current form - please check how it works now before changing this code. _GLIBCXX_NPROCS should be made to call pthread_num_processors_np() for mingw or HPUX.