Функция hardware_concurrency
Функция hardware_concurrency класса thread
возвращает количество аппаратных потоков,
которые могут выполняться одновременно.
Это значение обычно равно количеству логических
ядер процессора. Функция не принимает параметров.
Возвращаемое значение имеет тип unsigned int.
Если информация недоступна, функция возвращает 0.
Синтаксис
unsigned int thread::hardware_concurrency();
Пример
Давайте выведем количество аппаратных потоков в текущей системе:
#include <iostream>
#include <thread>
using namespace std;
int main()
{
unsigned int res = thread::hardware_concurrency();
cout << res << endl;
return 0;
}
Результат выполнения кода:
8
Пример
Давайте используем это значение для определения количества потоков при распределении работы:
#include <iostream>
#include <thread>
using namespace std;
int main()
{
unsigned int count = thread::hardware_concurrency();
if (count == 0) {
count = 1;
}
cout << "Threads: " << count << endl;
return 0;
}
Результат выполнения кода:
"Threads: 8"