ホームページ >バックエンド開発 >C++ >.NET/C# で CPU コア数を取得するにはどうすればよいですか?

.NET/C# で CPU コア数を取得するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-18 20:20:17401ブラウズ

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

.NET/C# の CPU コア数を取得します

アプリケーションで使用できる CPU コアの数を決定することは、パフォーマンスを最適化するために重要です。 .NET/C# では、この情報を抽出する方法が複数あります。

1. 環境.プロセッサ数

このプロパティは、システム上の論理プロセッサの数を提供します。ただし、物理プロセッサとハイパースレッド コアは区別されません。

<code class="language-C#">Console.WriteLine("逻辑处理器数量: {0}", Environment.ProcessorCount);</code>

2. Win32_プロセッサ

WMI (Windows Management Instrumentation) を使用すると、プロセッサに関する詳細情報にアクセスできます:

物理プロセッサ:

<code class="language-C#">foreach (var item in new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
{
    Console.WriteLine("物理处理器数量: {0}", item["NumberOfProcessors"]);
}</code>

コア数:

<code class="language-C#">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);</code>

3. 除外されるプロセッサ

さらに、Windows API 呼び出しを使用して、Windows で除外されたプロセッサを検出できます。次のコードは、除外されたプロセッサを含む論理プロセッサの合計数を表示します:

<code class="language-C#">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);</code>

以上が.NET/C# で CPU コア数を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。