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.

Reply via email to