POSIX equivalent of boost::thread::hardware_concurrency
POSIX equivalent of boost::thread::hardware_concurrency
可能重复:
以程序方式查找机器上的核心数量
什么是特定于POSIX或x86、x86-64的系统调用,以确定系统在没有过度订阅的情况下可以运行的最大线程数?非常感谢。
它使用C兼容的构造,那么为什么不直接使用实际的代码呢?[libs/thread/src/*/thread.cpp]
使用pthread库:
unsigned thread::hardware_concurrency()
{
#if defined(PTW32_VERSION) || defined(__hpux)
return pthread_num_processors_np();
#elif defined(__APPLE__) || defined(__FreeBSD__)
int count;
size_t size=sizeof(count);
return sysctlbyname("hw.ncpu",&count,&size,NULL,0)?0:count;
#elif defined(BOOST_HAS_UNISTD_H) && defined(_SC_NPROCESSORS_ONLN)
int const count=sysconf(_SC_NPROCESSORS_ONLN);
return (count>0)?count:0;
#elif defined(_GNU_SOURCE)
return get_nprocs();
#else
return 0;
#endif
}
在窗口中:
unsigned thread::hardware_concurrency()
{
SYSTEM_INFO info={{0}};
GetSystemInfo(&info);
return info.dwNumberOfProcessors;
}
相关文章:
- 在其他线程中循环访问该concurrent_vector时调用 concurrency::concurrent_vect
- android.hardware.Camera 无法每隔 2 次打开一次
- CMake march hardware
- 原子操作示例'Concurrency in Action'的正确性
- 使用 Concurrency::p arallel_for() 的边际性能提升
- 如果不使用C++11,安东尼威廉的"C++ Concurrency in action"是一本合适的书吗?
- concurrency::fast_math::tanh()在parallel_for_each(C++AMP)处返回N
- "Concurrency in Action"中的线程池示例
- 单个迭代使用MS concurrency::parallel_for()的性能
- "C++ Concurrency in Action"年的阿姆达尔定律
- 如何获得"hardware time"