프로그램으로 컴퓨터 코어수를 알 수 있을까요?


플랫폼이랑 관계 없이 C/C++써서 몇코어인지를 알아내는 방법 있을까요

그런 방법 없으면 플랫폼따라서 써주세요

  • 2016년 06월 01일에 수정됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.
  • 2016년 01월 06일에 작성됨

조회수 249


1 답변


좋아요
0
싫어요
채택취소하기

C++11이상이라면 std::thread::hardware_concurrency를 보세요

//detect못 할 때는 0을 리턴합니다.
unsigned concurentThreadsSupported = std::thread::hardware_concurrency();

Win32:

SYSTEM_INFO sysinfo;
GetSystemInfo( &sysinfo );

numCPU = sysinfo.dwNumberOfProcessors;

Linux, Solaris, & AIX and Mac OS X (10.4 이상):

numCPU = sysconf( _SC_NPROCESSORS_ONLN );

FreeBSD, MacOS X, NetBSD, OpenBSD, etc.:

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

/* set the mib for hw.ncpu */
mib[0] = CTL_HW;
mib[1] = HW_AVAILCPU;  // 이게 안 된다면, HW_NCPU을 써 보세요;

/* get the number of CPUs from the system */
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:

numCPU = mpctl(MPC_GETNUMSPUS, NULL, NULL);

IRIX:

numCPU = sysconf( _SC_NPROC_ONLN );

Mac OS X (10.5 and newer) or iOS (any version) using Objective-C:

NSUInteger a = [[NSProcessInfo processInfo] processorCount];
NSUInteger b = [[NSProcessInfo processInfo] activeProcessorCount];
  • 2016년 01월 06일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close