首頁 >後端開發 >C++ >如何確定 .NET/C# 應用程式中的 CPU 核心數量?

如何確定 .NET/C# 應用程式中的 CPU 核心數量?

Patricia Arquette
Patricia Arquette原創
2025-01-18 19:57:09888瀏覽

How Can I Determine the Number of CPU Cores in My .NET/C# Application?

在.NET/C#中決定CPU核心數

了解可用CPU核心的數量對於最佳化.NET/C#應用程式的資源利用率至關重要。本文探討了幾種檢索此資訊的方法,使開發人員能夠就多執行緒和效能最佳化做出明智的決策。

實體處理器、核心與邏輯處理器

區分實體處理器、核心和邏輯處理器的數量非常重要。實體處理器代表實際的硬體單元,而核心是處理器內的單一執行單元。邏輯處理器是核心的虛擬化表示,允許作業系統透過將它們呈現為單獨的實體來更有效地調度執行緒。

擷取核心數

在.NET/C#中,有幾種方法可以檢索CPU核心數。

邏輯處理器(Environment類別)

Environment類別提供對邏輯處理器數量的存取:

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

核心(WMI)

使用WMI(Windows管理規格),您可以擷取核心數量:

<code class="language-csharp">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>

實體處理器(WMI)

在.NET Core中,您可以使用WMI來取得實體處理器的數量:

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

Windows中排除的處理器(Windows API)

setupapi.dll中的Windows API呼叫允許發現Windows中排除的處理器:

<code class="language-csharp">static void Main(string[] args)
{
    int deviceCount = 0;
    IntPtr deviceList = IntPtr.Zero;
    // 处理器类ID的GUID
    Guid processorGuid = new Guid("{50127dc3-0f36-415e-a6cc-4cb3be910b65}");
    ...
    Console.WriteLine("核心数量:{0}", deviceCount);
}</code>

總結

本文示範了幾種在.NET/C#中檢索CPU核心數的方法。透過了解這些技術,開發人員可以優化資源利用率,平衡執行緒工作負載並提高應用程式效能。

以上是如何確定 .NET/C# 應用程式中的 CPU 核心數量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn