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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-12-14 18:10:11426ブラウズ

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

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