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