Вопрос по windows-runtime, c++, winapi – Как я могу получить количество логических процессоров на WinRT?

4

Я пытаюсь скомпилировать Boost 1.49.0 для WinRT. Я объяснил это одним методом: GetSystemInfo (), который используется в boost :: thread :: hardware_concurrency () для получения количества логических процессоров в системе.

Я еще не нашел замены в WinRT.

Есть ли альтернативный метод, который я мог бы использовать?

Обратите внимание, что Visual C ++ 11 поддерживает библиотеки потоков C ++ 11 и атомарности; Вы можете рассмотреть возможность использования этого вместо Boost.Thread. Библиотеки очень похожи. James McNellis
Спасибо! Это для компиляции существующего кроссплатформенного проекта, который может использовать TBB, Poco или Boost.Threads. Boost.Threads был единственным легко переносимым (это был единственный и последний метод, для которого я пока не нашел замену WinRT). Cygon

Ваш Ответ

2   ответа
3

нет простого способа получить эту информацию в WinRT. Если вы просто хотите знать архитектуру процессора, то вы можете использоватьWindows.System.ProcessorArchitecture но это не скажет вам, сколько доступно логических процессоров.Windows.System.Threading также не сообщает вам эту информацию.

Чтобы получить информацию о физическом процессоре, который я нашелэтот вопрос на форуме MSDN, который предполагает, что мы можем использоватьDeviceEnumeration чтобы получить эту информацию. Используя GUID для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, так что я не уверен, есть ли лучший способ просто получить процессор, но я получил информацию о том, какой у меня процессор

"Intel(R) Core(TM) i7 CPU       Q 740  @ 1.73GHz"

К сожалению, эта информация, похоже, не включает простой флаг, который сообщает вам количество процессоров, и поэтому я думаю, что было бы трудно получить доступ к ряду логических процессоров. Я предлагаю вам спросить на форуме MSDN. Они обычно довольно отзывчивы.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
10

GetNativeSystemInfo, что разрешено в приложениях в стиле Metro.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededGetSystemInfoError: User Rate Limit ExceededGetNativeSystemInfoError: User Rate Limit Exceeded
Error: User Rate Limit Exceededthis section of the Windows Dev CenterError: User Rate Limit Exceeded

Похожие вопросы