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

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

DDD
リリース: 2024-12-13 09:23:11
オリジナル
175 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート