글
hardware_concurrency()는 하드웨어 스레드 컨텍스트 수를 알려 주는 함수입니다.
스레드 컨텍스트는 CPU 수, 코어 수, 하이퍼 스레드와 관계가 있습니다.
하드웨어 스레드 컨텍스트 수는 Windows의 '작업 관리자'의 '성능' 탭에서 볼 수 있습니다.
제 컴퓨터는 CPU 하나에 코어는 4개이고, 하이퍼 스레딩을 지원하지 않는 CPU라서 CPU 사용 현황에 4개의 그림만 나옵니다. 그래서 저는 hardware_concurrency() 함수를 실행하면 결과는 4가 나옵니다.
관례적으로 프로그램에서 멀티 스레드를 만들 때 (하드웨어 스레드 컨텍스트 수 * 2) +1 이라는 공식으로 나온 수 만큼 만들면 좋다고 합니다. 이때 hardware_concurrency() 함수를 사용하면 좋습니다.
그리고 만약 hardware_concurrency()를 사용할 수 없는 경우라면 0 을 반환 합니다.
< 예제. 7 >
#include <thread>
#include <iostream>
int main()
{
std::cout << "하드웨어 컨텍스트 수 : " << std::thread::hardware_concurrency() << std::endl;
return 0;
}
< 실행 결과 >
댓글