implementation of std::thread::hardware_concurrency()
Iain Sandoe
developer@sandoe-acoustics.co.uk
Mon Nov 7 14:24:00 GMT 2011
On 7 Nov 2011, at 14:16, Jonathan Wakely wrote:
> On 7 November 2011 14:10, Iain Sandoe wrote:
>>
>> On 7 Nov 2011, at 13:45, Jonathan Wakely wrote:
>>
>>> This provides a working thread::hardware_concurrency on platforms
>>> that
>>> support pthread_num_processors_np or the "hw.ncpu" sysctl, but by
>>> testing for the features in configure rather than hardcoding OS
>>> macro
>>> tests in thread.cc
>>
>> if the system supports run-time User-controllable core-count then
>> this will
>> not account for that.
>
> Yep. Do you know how to detect the right value in that case? If not
> the alternative is to revert to the previous behaviour of returning
> zero.
>
> (My understanding was that at least some of the options would work for
> that case, NPROCESSORS_ONLN is distinct from _SC_NPROCESSORS_CONF, for
> example)
Hm. I don't know about the general case - on Darwin it's certainly
possible to get at the information at runtime;
hw.logicalcpu_max: 4
hw.logicalcpu: 4
hw.physicalcpu_max: 4
hw.physicalcpu: 4
hw.ncpu = 4
and ... switching the control panel to dual CPU ..
hw.logicalcpu_max: 4
hw.logicalcpu: 2
hw.physicalcpu_max: 4
hw.physicalcpu: 2
hw.ncpu = 4
but, as you say, that would be the implication of "ONLN" vs "CONF" ..
cheers
Iain
More information about the Libstdc++
mailing list