Есть ли способ получить число процессорных единиц, таких как процессор или ядра в системе? Я собираюсь написать приложение с помощью pthreads, поэтому, если есть вызов posix, это было бы здорово. Я знаю о чтении из / proc / cpuinfo, но это не так переносимо. Есть ли еще более портативный способ?
Комитет POSIX (ветки) рассмотрел вопрос о поддержке такой операции, но затем отказался. Люди собрали информацию о том, как это сделать в различных системах.
Я не знаю POSIX. Вам нужно отступить и выполнить проверки для каждой платформы или найти библиотеку, которая уже выполняет проверки для вас.
Если вы говорите о процессорах Intel, вы можете использовать:
int ncores=0,nthreads=0; asm volatile("cpuid": "=a" (ncores), "=b" (nthreads) : "a" (0xb), "c" (0x1) : );
Не в моих силах. Под окнами, например, вы получите это из GetSystemInfo. Вы, вероятно, можете получить эту информацию о процессорах x86 с помощью вызова ассемблера CPUID, но это не нужно на платформах, отличных от x86.