I'm writing a program in C on windows that needs to run as many threads as available cores. But I dont know how to get the number of cores. Any ideas?
You can call the GetSystemInfo
WinAPI function; it returns a SYSTEM_INFO
struct, which has the number of processors (which is the number of cores on a system with multiple core CPUs).
You can read NUMBER_OF_PROCESSORS environment variable.
Even though the question deals with .NET and yours with C, the basic responses should help:
Type "cmd" on windows startup and open "cmd.exe". Now type in the following command:
WMIC CPU Get /Format:List
You will find the entries like - "NumberOfCores" and "NumberOfLogicalProcessors". Typically the logical-processors are achieved by threading. Therefore the relation would typically go like;
NumberOfLogicalProcessors = NumberOfCores * Number-of-Threads-per-Core.
Since each core serves a processing-unit, therefore with threading, logical-processing-unit is realized in real space.
More info here.
来源:https://stackoverflow.com/questions/2619198/how-to-get-number-of-cores-in-win32