プログラムによるマシン上のコア数の決定
さまざまなコンピューティング シナリオでは、マシン上で使用可能なコアの数を理解することが重要です。 C/C は、このタスクに対してプラットフォームに依存しないソリューションを提供しません。ただし、この情報を提供できるプラットフォーム固有のアプローチがあります。
C 11 (プラットフォーム非依存)
C 11 では、std::thread::hardware_concurrency が導入されています。 () 関数は、次の数を取得する移植可能な方法を提供します。
#include <thread> const auto processor_count = std::thread::hardware_concurrency();
C 11 より前 (プラットフォーム固有)
C 11 より前の C では、コアに応じて特定のメソッドを使用する必要があります。プラットフォーム:
Win32
SYSTEM_INFO sysinfo; GetSystemInfo(&sysinfo); int numCPU = sysinfo.dwNumberOfProcessors;
Linux、Solaris、AIX、Mac OS X >=10.4
int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
FreeBSD、MacOS X、NetBSD、 OpenBSD
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; // alternatively, try HW_NCPU; /* get the number of CPUs from the system */ sysctl(mib, 2, &numCPU, &len, NULL, 0);
HPUX
int numCPU = mpctl(MPC_GETNUMSPUS, NULL, NULL);
IRIX
int numCPU = sysconf(_SC_NPROC_ONLN);
目的- C (Mac OS X >=10.5 またはiOS)
NSUInteger a = [[NSProcessInfo processInfo] processorCount]; NSUInteger b = [[NSProcessInfo processInfo] activeProcessorCount];
これらのプラットフォーム固有のメソッドまたは C 11 プラットフォームに依存しないアプローチを利用することで、マシン上で使用可能なコアの数をプログラム的に決定し、リソースの使用率を最適化することができ、アプリケーションのパフォーマンスを向上させます。
以上がマシン上のコアの数をプログラムで決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。