ホームページ >バックエンド開発 >C++ >マシン上のコアの数をプログラムで決定するにはどうすればよいですか?

マシン上のコアの数をプログラムで決定するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-13 09:23:11178ブラウズ

How Can I Programmatically Determine the Number of Cores on a Machine?

プログラムによるマシン上のコア数の決定

さまざまなコンピューティング シナリオでは、マシン上で使用可能なコアの数を理解することが重要です。 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。