プラットフォームに依存しないマシンのコア数の決定
マシンのコア数を決定することは、ソフトウェアのパフォーマンスを最適化するために不可欠です。ただし、このタスクに対してプラットフォームに依存しないソリューションを見つけるのは難しい場合があります。
C 11 ソリューション
幸いなことに、C 11 では、コアを識別するためのプラットフォームに依存しない方法が導入されています。 count:
#include <thread> const auto processor_count = std::thread::hardware_concurrency();
このメソッドは、基盤となるハードウェアによって報告されるコアの論理数を返し、
C 11 より前のソリューション
C 11 より前の C バージョンの場合、コア数を判断する移植可能な方法はありません。代わりに、プラットフォーム固有のアプローチを使用する必要があります。
Windows
SYSTEM_INFO sysinfo; GetSystemInfo(&sysinfo); int numCPU = sysinfo.dwNumberOfProcessors;
Unix 系システム
int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
macOS (以前10.5)
int mib[4]; int numCPU; std::size_t len = sizeof(numCPU); /* set the mib for hw.ncpu */ mib[0] = CTL_HW; mib[1] = HW_AVAILCPU; /* get the number of CPUs from the system */ sysctl(mib, 2, &numCPU, &len, NULL, 0);
Objective-C (macOS 10.5 以降)
NSUInteger a = [[NSProcessInfo processInfo] processorCount];
以上がC でマシンのコア数をポータブルに判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。