Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Lấy số lõi CPU (Processor Count) trong C#

Thuộc tính Environment.ProcessorCount trả về số lượng **lõi xử lý logic (logical processors)** trên máy tính hiện tại. Giá trị này bao gồm cả hyper-threading (ví dụ: 4 cores + hyperthreading = 8 logical processors).

Ví dụ cơ bản

int cores = Environment.ProcessorCount;
Console.WriteLine($"Số lõi logic: {cores}");

Mã nguồn hoàn chỉnh

using System;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Environment.ProcessorCount);
        }
    }
}

Kết quả (ví dụ)

8

Ứng dụng thực tế

Mục đíchCode
Giới hạn độ song song (MaxDegreeOfParallelism)Parallel.ForEach(items, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, ...)
Cấu hình ThreadPoolThreadPool.SetMinThreads(Environment.ProcessorCount, ...)
Chia tác vụ cho workerint batchSize = items.Count / Environment.ProcessorCount;
Benchmark/Performance testĐiều chỉnh workload theo số core

Lưu ý

  • Trả về **logical processors** (bao gồm hyper-threading), không phải physical cores.
  • Trên container (Docker/K8s), có thể phản ánh CPU limit của container chứ không phải host.
  • Để lấy physical cores: cần P/Invoke Windows API (GetLogicalProcessorInformation) hoặc đọc /proc/cpuinfo trên Linux.
  • Giá trị không thay đổi trong suốt vòng đời process.

.NET 8+: Environment.ProcessorCount vs GCHeapCount

// .NET 8 thêm GCHeapCount cho server GC
int gcHeaps = Environment.GCHeapCount;  // Thường = ProcessorCount cho Server GC