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

さまざまなシステムの CPU コアの数をプログラムで決定するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-14 18:10:11
オリジナル
428 人が閲覧しました

How to Programmatically Determine the Number of CPU Cores in Different Systems?

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

さまざまなシナリオにおいて、マシンが所有するコアの数を確認することが不可欠になります。この情報は、リソース割り当ての最適化とシステム機能の理解に役立ちます。この重要なメトリクスを決定するには、いくつかの方法が存在します。

C 11 以降

C 11 では、コア数を取得するための移植可能なソリューションが導入されました。

#include <thread>

// May return 0 if unable to detect.
const auto processor_count = std::thread::hardware_concurrency();
ログイン後にコピー

C 11 以前およびプラットフォーム固有アプローチ

C 11 より前は、プラットフォーム固有のメソッドが採用されていました:

Windows

SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
int numCPU = sysinfo.dwNumberOfProcessors;
ログイン後にコピー

Linux、Solaris 、AIX、Mac OS X (タイガー以降)

int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
ログイン後にコピー

FreeBSD、macOS、NetBSD、 OpenBSD

int mib[4];
int numCPU;
std::size_t len = sizeof(numCPU); 

mib[0] = CTL_HW;
mib[1] = HW_AVAILCPU;

sysctl(mib, 2, &numCPU, &len, NULL, 0);

if (numCPU < 1) 
{
    mib[1] = HW_NCPU;
    sysctl(mib, 2, &numCPU, &len, NULL, 0);
    if (numCPU < 1)
        numCPU = 1;
}
ログイン後にコピー

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];
ログイン後にコピー

これらの手法を活用することで、開発者はマシンで利用可能なコアの数を簡単に決定でき、リソースの効率的な利用とパフォーマンスの最適化が可能になります。

以上がさまざまなシステムの CPU コアの数をプログラムで決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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