Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mendapatkan Bilangan Teras CPU dalam .NET/C#?

Bagaimana untuk Mendapatkan Bilangan Teras CPU dalam .NET/C#?

Barbara Streisand
Barbara Streisandasal
2025-01-18 19:51:101011semak imbas

How to Get the Number of CPU Cores in .NET/C#?

Mendapatkan Kiraan Teras CPU menggunakan .NET/C#

.NET/C# menyediakan beberapa kaedah untuk mengenal pasti bilangan teras CPU yang tersedia pada sistem. Berikut ialah beberapa pendekatan:

1. Pemproses Fizikal:

Kaedah ini mengira bilangan pemproses fizikal yang dipasang.

<code class="language-csharp">foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
{
    Console.WriteLine($"Number of Physical Processors: {item["NumberOfProcessors"]}");
}</code>

2. Teras setiap Pemproses:

Pendekatan ini menjumlahkan kiraan teras merentas semua pemproses.

<code class="language-csharp">int totalCores = 0;
foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_Processor").Get())
{
    totalCores += int.Parse(item["NumberOfCores"].ToString());
}
Console.WriteLine($"Total Number of Cores: {totalCores}");</code>

3. Pemproses Logik:

Ini mengakses terus jumlah bilangan pemproses logik (termasuk hyperthreading).

<code class="language-csharp">Console.WriteLine($"Number of Logical Processors: {Environment.ProcessorCount}");</code>

4. Pemproses (tidak termasuk yang disembunyikan oleh Windows):

Kaedah ini mengambil kira pemproses yang mungkin dikecualikan daripada pelaporan Windows standard. Ia memerlukan penggunaan API Persediaan.

<code class="language-csharp">int processorCount = 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))
        {
            processorCount = deviceNumber;
            break;
        }
    }
}
finally
{
    if (deviceList != IntPtr.Zero) { SetupDiDestroyDeviceInfoList(deviceList); }
}
Console.WriteLine($"Number of Cores (including hidden): {processorCount}");</code>

Pertimbangan Penting:

  • System.Management.dll: Ingat untuk menambah rujukan kepada System.Management.dll dalam projek anda.
  • Kemas Kini Sistem: Kemas kini sistem yang lengkap (pembetulan terkini dan pek perkhidmatan) mungkin diperlukan untuk mendapatkan hasil yang tepat pada sesetengah sistem. Ketersediaan maklumat pemproses terperinci bergantung pada konfigurasi dan kemas kini sistem.

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

Kenyataan:
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