[fpc-pascal] number of cpu cores
Marco van de Voort
marcov at stack.nl
Sat Nov 29 19:14:39 CET 2008
In our previous episode, Michalis Kamburelis said:
[ Charset ISO-8859-1 unsupported, converting... ]
> Florian Klaempfl wrote:
> > Mattias Gaertner schrieb:
> >> I need a default value of the number of maximum threads.
> >> Is there already some RTL function that can be used for that?
> >> For example if the program runs on a 2 x quad core it would be nice to
> >> get 8.
> >> Hyperthreading multipliers should be applied.
> > No, but having some functions returning information about the CPUs would
> > be nice.
> Blender (http://www.blender.org/) source code has function to do that
> (they needed this to set the default number of threads for renderer). So
> you could try converting to Pascal the code of "BLI_system_thread_count"
> function from:
> Doesn't seem that complicated on 1st look. It's basically appropriate
> GetSystemInfo call on Windows, sysctl on Mac OS, and sysconf (from Libc)
> call on most Unixes.
Sysconf is not standarized yet. Unit libc is linux/x86 only.
On freebsd, the sysctl modeled works, but note the typecast. (probably a K&R
void* <-> char* problem)
var mib : array[0..1] of cint;
mib := CTL_HW;
mib := HW_NCPU;
len := sizeof(t);
fpsysctl(pchar(@mib), 2, @t, @len, Nil, 0);
writeln(t); // prints 2 on our dual CPU (Athlon MPs)
More information about the fpc-pascal