You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.Net Core中获取Parallel并行任务运行CPU核心编号的方法

实现方案

.NET 5 原生提供了直接获取当前线程运行CPU核心编号的方法,无需调用任何外部系统命令,具体实现如下:

核心实现逻辑

你可以直接使用System.Threading.Thread类的GetCurrentProcessorId()方法,该方法会返回当前线程正在运行的处理器核心编号,底层适配Linux/Windows等不同操作系统,在Ubuntu 20.04环境下会直接调用系统原生的sched_getcpu()接口获取数据,完全满足你的需求。

代码示例

using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        // 替换为你的待处理文件目录路径
        string targetDir = "/path/to/your/files";
        string[] filesToProcess = Directory.GetFiles(targetDir);

        Parallel.ForEach(filesToProcess, file =>
        {
            // 获取当前运行的CPU核心编号
            int coreId = Thread.GetCurrentProcessorId();
            // 输出你需要的信息
            Console.WriteLine($"待处理文件路径:{file},当前运行CPU核心编号:{coreId}");
            
            // 这里补充你原本的文件处理逻辑
            // YourFileProcessLogic(file);
        });
    }
}

注意事项

  • GetCurrentProcessorId()返回的是调用时刻线程所在的核心编号,操作系统可能会在后续运行过程中调度线程切换核心,同个任务前后两次调用可能得到不同的结果
  • 输出的核心编号从0开始计数,和你物理CPU的核心编号一一对应
  • 如果你需要固定线程绑定到特定核心运行,可以通过P/Invoke调用Linux原生的pthread_setaffinity_np方法设置线程亲和性,普通场景下无需额外配置

内容的提问来源于stack exchange,提问作者fire_water

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:15:04