У меня нет доступа к компьютеру с несколькими гнездами, поэтому я не уверен, что следующее получит общее количество процессоров и логических процессоров. Я предполагаю, что ManagementObjectSearcher вернет экземпляр для каждого сокетного процессора, и я просто оставлю текущую сумму?Это правильный способ получить общее количество процессоров с WMI в системе с несколькими процессорами?
int totalCPUs = 0;
int totalLogicalCPUs = 0;
ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * from Win32_ComputerSystem");
foreach (var mo in mos.Get())
{
string num = mo.Properties["NumberOfProcessors"].Value.ToString();
totalCPUs += Convert.ToInt32(num);
num = mo.Properties["NumberOfLogicalProcessors"].Value.ToString();
totalLogicalCPUs += Convert.ToInt32(num);
}
Это не так, но ваш код по-прежнему будет работать, когда он будет запущен на массовом параллельном кластере с несколькими машинами. –