4

WinRT用にBoost1.49.0をコンパイルしようとしています。私はそれを1つのメソッドに落とし込みました:GetSystemInfo()。これは、boost :: thread :: hardware_concurrency()で使用され、システム上の論理プロセッサの数を取得します。

WinRTに代わるものはまだ見つかりません。

使用できる別の方法はありますか?

4

3 に答える 3

11

GetNativeSystemInfoMetroスタイルアプリで許可されているWindowsAPI関数を呼び出すことができます。

于 2012-04-12T23:04:22.600 に答える
3

WinRTでこの情報を取得する簡単な方法はないようです。プロセッサアーキテクチャを知りたいだけの場合は使用できますWindows.System.ProcessorArchitectureが、使用可能な論理CPUの数はわかりません。Windows.System.Threadingこの情報も教えてくれません。

物理CPUに関する情報を取得するために、MSDNフォーラムでこの質問を見つけました。これは、 DeviceEnumerationを使用してこの情報を取得できることを示唆しています。GUID_DEVICE_PROCESSORのGUID ({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フォーラムで質問することをお勧めします。彼らは通常非常に敏感です。

于 2012-04-11T23:47:28.210 に答える
0

System.Environment.ProcessorCountは、コアの数を示します。

于 2013-01-24T19:40:46.277 に答える