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.