如何获取 WinRT 上的逻辑 CPU 数量
How can I get the number of logical CPUs on WinRT?
我正在尝试为 WinRT 编译 Boost 1.49.0。我把它归结为一种方法:GetSystemInfo(),它在boost::thread::hardware_concurrency()中用于获取系统上逻辑处理器的数量。
我还没有在 WinRT 中找到任何替代品。
有没有我可以使用的替代方法?
你可以调用 Windows API 函数 GetNativeSystemInfo
,这在 Metro 风格的应用中是允许的。
似乎没有一种简单的方法可以在 WinRT 中获取此信息。如果您只是想知道处理器架构,那么您可以使用Windows.System.ProcessorArchitecture
但这不会告诉您有多少逻辑 CPU 可用。 Windows.System.Threading
也没有告诉你这些信息。
为了获取有关物理 CPU 的信息,我在 MSDN 论坛上发现了这个问题,这表明我们可以使用设备枚举来获取此信息。通过使用 GUID for GUID_DEVICE_PROCESSOR ({97FADB10-4E33-40AE-359C-8BEF029DBDD0}),可以枚举所有处理器。
在 Javascript 中,这应该看起来像这样 - 有关C++示例,请参阅 MSDN 上的设备枚举示例:
Windows.Devices.Enumeration.DeviceInformation.findAllAsync('"System.Devices.InterfaceClassGuid:="{97FADB10-4E33-40AE-359C-8BEF029DBDD0}""')
.then(function (info) {
for (var i = 0; i < info.length; i++) {
var device = info[i];
}
});
在我的机器上,这为我提供了各种设备,声卡,PCI和USB处理器,所以我不确定是否有更好的方法来获取CPU,但我确实得到了我拥有的CPU的信息
"Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz"
不幸的是,此信息似乎不包括告诉您 CPU 数量的简单标志,因此我认为很难获得多个逻辑 CPU。我建议您在MSDN论坛上提问。他们通常反应灵敏。
System.Environment.ProcessorCount 应该给你内核数。
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 大小相等但成员数量不同的结构之间的性能差异
- 如何从"decltype()"获取函数参数的数量<funtion>?
- 只能向C++添加一定数量的字符
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 如何从一行中读取特定数量的字符?(C++)
- 如何计算多映射中重复对的数量
- visual是否可以在c++中创建一个接收无限数量相同类型(或至少相当数量)参数的函数
- 在不传递参数数量且只有3个点的情况下,如何使用变差函数
- 在模拟器中使用并集来模拟CPU寄存器有多合适
- 根据用户回答声明"Players"。用户选择玩家数量。播放器是结构体
- 编写一个函数以使用 n 百分比的 CPU 使用率
- 如何禁用 CPU 的无序执行
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 如何在windows上获取cpu上的实际内核数量
- 如何获取 WinRT 上的逻辑 CPU 数量
- 增加mpi中的CPU数量会增加处理时间
- 创建一个占用特定CPU和RAM数量的任务
- 我应该分割我的异步调用块根据cpu的数量
- 即使cpu数量增加,执行时间也会增加,为什么?