Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mendapatkan Kiraan Teras CPU dalam .NET/C#?

Bagaimanakah Saya Boleh Mendapatkan Kiraan Teras CPU dalam .NET/C#?

Susan Sarandon
Lepaskan: 2025-01-18 20:20:17
asal
414 orang telah melayarinya

How Can I Retrieve the CPU Core Count in .NET/C#?

Dapatkan bilangan teras CPU dalam .NET/C#

Menentukan bilangan teras CPU yang tersedia untuk aplikasi anda adalah penting untuk mengoptimumkan prestasi. Dalam .NET/C#, terdapat pelbagai cara untuk mengekstrak maklumat ini:

1. Environment.ProcessorCount

Harta ini menyediakan bilangan pemproses logik pada sistem. Walau bagaimanapun, ia tidak membezakan antara pemproses fizikal dan teras hyper-threaded.

Console.WriteLine("逻辑处理器数量: {0}", Environment.ProcessorCount);
Salin selepas log masuk

2. Win32_Processor

Menggunakan WMI (Windows Management Instrumentation) anda boleh mengakses maklumat yang lebih terperinci tentang pemproses:

Pemproses Fizikal:

foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
{
    Console.WriteLine("物理处理器数量: {0}", item["NumberOfProcessors"]);
}
Salin selepas log masuk

Bilangan teras:

int coreCount = 0;
foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_Processor").Get())
{
    coreCount += int.Parse(item["NumberOfCores"].ToString());
}
Console.WriteLine("核心数量: {0}", coreCount);
Salin selepas log masuk

3. Pemproses yang dikecualikan

Selain itu, anda boleh menggunakan panggilan API Windows untuk menemui pemproses yang dikecualikan dalam Windows. Kod berikut memaparkan jumlah bilangan pemproses logik, termasuk pemproses yang dikecualikan:

int deviceCount = 0;
IntPtr deviceList = IntPtr.Zero;
Guid processorGuid = new Guid("{50127dc3-0f36-415e-a6cc-4cb3be910b65}");

try
{
    deviceList = SetupDiGetClassDevs(ref processorGuid, "ACPI", IntPtr.Zero, (int)DIGCF.PRESENT);
    for (int deviceNumber = 0; ; deviceNumber++)
    {
        SP_DEVINFO_DATA deviceInfo = new SP_DEVINFO_DATA();
        deviceInfo.cbSize = Marshal.SizeOf(deviceInfo);
        if (!SetupDiEnumDeviceInfo(deviceList, deviceNumber, ref deviceInfo))
        {
            deviceCount = deviceNumber;
            break;
        }
    }
}
finally
{
    if (deviceList != IntPtr.Zero) { SetupDiDestroyDeviceInfoList(deviceList); }
}
Console.WriteLine("核心数量: {0}", deviceCount);
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Kiraan Teras CPU dalam .NET/C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan