首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >POSIX等价于boost::thread::hardware_concurrency

POSIX等价于boost::thread::hardware_concurrency
EN

Stack Overflow用户
提问于 2011-09-07 22:03:44
回答 1查看 2.1K关注 0票数 1

可能重复:

Programmatically find the number of cores on a machine

什么是POSIX或x86,x86-64特定的系统调用,以确定系统可以在没有超额订阅的情况下运行的最大线程数?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-07 23:10:43

它使用与C兼容的结构,那么为什么不直接使用实际的代码呢?libs/线程/src/*/线程.src

使用p线程库:

代码语言:javascript
复制
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
}

在窗口:

代码语言:javascript
复制
unsigned thread::hardware_concurrency()
{
    SYSTEM_INFO info={{0}};
    GetSystemInfo(&info);
    return info.dwNumberOfProcessors;
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7341046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档