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

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

Barbara Streisand
Barbara Streisandオリジナル
2025-01-18 19:51:101012ブラウズ

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

.NET/C# を使用した CPU コア数の取得

.NET/C# には、システムで使用可能な CPU コアの数を識別するためのいくつかの方法が用意されています。 ここではいくつかのアプローチを示します:

1.物理プロセッサ:

このメソッドは、インストールされている物理プロセッサの数をカウントします。

<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.プロセッサーあたりのコア数:

このアプローチでは、すべてのプロセッサーのコア数を合計します。

<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.論理プロセッサ:

これは、論理プロセッサの総数 (ハイパースレッディングを含む) に直接アクセスします。

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

4.プロセッサ (Windows によって隠されているプロセッサを除く):

この方法は、標準の Windows レポートから除外される可能性のあるプロセッサを考慮します。 Setup API を使用する必要があります。

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

重要な考慮事項:

  • System.Management.dll: プロジェクトに System.Management.dll への参照を忘れずに追加してください。
  • システム アップデート: 一部のシステムで正確な結果を得るには、完全なシステム アップデート (ホットフィックスとサービス パック) が必要な場合があります。 詳細なプロセッサ情報を利用できるかどうかは、システムの構成とアップデートによって異なります。

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

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