WinRT用にBoost1.49.0をコンパイルしようとしています。私はそれを1つのメソッドに落とし込みました:GetSystemInfo()。これは、boost :: thread :: hardware_concurrency()で使用され、システム上の論理プロセッサの数を取得します。
WinRTに代わるものはまだ見つかりません。
使用できる別の方法はありますか?
WinRT用にBoost1.49.0をコンパイルしようとしています。私はそれを1つのメソッドに落とし込みました:GetSystemInfo()。これは、boost :: thread :: hardware_concurrency()で使用され、システム上の論理プロセッサの数を取得します。
WinRTに代わるものはまだ見つかりません。
使用できる別の方法はありますか?
GetNativeSystemInfo
Metroスタイルアプリで許可されているWindowsAPI関数を呼び出すことができます。
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フォーラムで質問することをお勧めします。彼らは通常非常に敏感です。
System.Environment.ProcessorCountは、コアの数を示します。