Avatar ·

¿Cómo determinar programáticamente el número de núcleos de CPU en C++ (solución multiplataforma)?

¡Hola a todos! Estoy escribiendo una aplicación multithreading en C++ para procesamiento de imágenes. Quiero que el programa determine automáticamente el número óptimo de hilos según el hardware del usuario. El problema es que necesito que funcione tanto en Windows como en Linux. Intenté usar macros y llamadas a la API del sistema, pero resulta un zoológico: ```cpp #ifdef _WIN32 SYSTEM_INFO sysinfo; GetSystemInfo(&sysinfo); int cores = sysinfo.dwNumberOfProcessors; #elif __linux__ int cores = sysconf(_SC_NPROCESSORS_ONLN); #else int cores = 1; // fallback #endif ``` Esto funciona, pero el código se ve horrible. Además, leí que en algunos procesadores con Hyper-Threading `dwNumberOfProcessors` devuelve núcleos lógicos, no físicos. Y necesito la cantidad de núcleos físicos para no crear hilos innecesarios y no sobrecargar el caché. ¿Hay una forma más elegante de hacer esto en C++ moderno (C++11/14/17)? ¿Quizás existe alguna función estándar o biblioteca que abstraiga...