#ifdef __linux__
#include <unistd.h>
#elif defined(__APPLE__) || defined(__FreeBSD__)
+#include <stddef.h>
#include <sys/types.h>
#include <sys/sysctl.h>
+#elif defined(PLATFORM_WINDOWS)
+#include <windows.h>
#endif
#include "pbd/cpus.h"
+#if defined(COMPILER_MSVC) && !defined(PTW32_VERSION)
+#include <ardourext/pthread.h> // Gets us 'PTW32_VERSION'
+#endif
+
uint32_t
hardware_concurrency()
{
#elif defined(__APPLE__) || defined(__FreeBSD__)
int count;
size_t size=sizeof(count);
- return sysctlbyname("hw.ncpu",&count,&size,NULL,0)?0:count;
+ return sysctlbyname("hw.physicalcpu",&count,&size,NULL,0)?0:count;
#elif defined(HAVE_UNISTD) && defined(_SC_NPROCESSORS_ONLN)
int const count=sysconf(_SC_NPROCESSORS_ONLN);
return (count>0)?count:0;
+#elif defined(PLATFORM_WINDOWS)
+ SYSTEM_INFO sys_info;
+ GetSystemInfo( &sys_info );
+ return sys_info.dwNumberOfProcessors;
#else
return 0;
#endif