1
0
mirror of git://jb55.com/damus synced 2024-09-05 21:03:51 +00:00
damus/nostrdb/cpu.h
2023-12-02 13:47:17 -08:00

35 lines
863 B
C

#if defined(_WIN32) || defined(_WIN64)
#include <windows.h>
#elif defined(__linux__)
#include <unistd.h>
#elif defined(__APPLE__)
#include <sys/types.h>
#include <sys/sysctl.h>
#else
#error "Unsupported platform"
#endif
static inline int get_cpu_cores() {
int num_cores = 0;
// Windows
#if defined(_WIN32) || defined(_WIN64)
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
num_cores = sysinfo.dwNumberOfProcessors; // This returns logical processors
// Further use GetLogicalProcessorInformation for physical cores...
// Linux
#elif defined(__linux__)
num_cores = sysconf(_SC_NPROCESSORS_ONLN); // This returns logical processors
// macOS
#elif defined(__APPLE__)
size_t size = sizeof(num_cores);
sysctlbyname("hw.physicalcpu", &num_cores, &size, NULL, 0);
#else
num_cores = -1; // Unsupported platform
#endif
return num_cores;
}