c# - 在 C# 中获取给定线程的 cpu 号

标签 c# multithreading

在C#中,有什么方法可以获取正在执行线程的内核的cpu id(或内核编号)?我有一个四核处理器,我想知道在跨越一些线程时,它们分配了哪些内核?

我发现 System.Environment.ProcessorCount 给出了当前的 CPU 总数,但是有什么方法可以知道哪个特定的 CPU 实例正在执行给定的线程。

最佳答案

我不知道可以提供此功能的 native .NET 函数。但是如果您准备使用 P/Invoke 并且在 Windows 2003、Vista 或更高版本上运行,那么您可以调用 GetCurrentProcessorNumber .

当然,这只会为您提供在该特定时间片执行线程的 CPU(核心),下次调度线程时,它可能会在完全不同的核心上运行,即使操作系统会努力调度出于性能原因,同一核心上的线程。

关于c# - 在 C# 中获取给定线程的 cpu 号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6179186/

相关文章:

c# - 无法将类型为 'System.Data.DataRowView' 的对象转换为类型 'System.IConvertible'

c# - 如何在不重定向到 Facebook Logo 的情况下获得用户许可

c# - 如何从具有 EF 模型的程序集中获取 csdl、ssdl 和 msl 规范

java - 如何在 Java 中阻塞一组线程

c# - RenderTarget2D 将所有 alpha 着色为紫色

c# - 无法在 C# 中解析日期时间

Java多线程切换上下文VS提交新任务以及监控队列的解决方案

c++ - vmware中的线程编程, 'process scheduling'没有发生

java - Android View 不能被其他线程触及?

multithreading - 为什么我不能像这样动态创建线程向量