首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么使用sysconf(_SC_NPROCESSORS_CONF)来获取x264中的CPU核数?

为什么使用sysconf(_SC_NPROCESSORS_CONF)来获取x264中的CPU核数?
EN

Stack Overflow用户
提问于 2017-11-04 13:36:31
回答 1查看 4.6K关注 0票数 1

我发现x264使用sysconf(_SC_NPROCESSORS_CONF)而不是sysconf(SC_NPROCESSORS_ONLN)来获取CPU核心的数量。

下面是X 264/公用/cpu.c中的代码片段

代码语言:javascript
复制
...
#ifdef __ANDROID__
    // Android NDK does not expose sched_getaffinity
    return sysconf( _SC_NPROCESSORS_CONF );
#else
    ...
....

我发现了_SC_NPROCESSORS_CONF和_SC_NPROCESSORS_ONLN在手册中的区别

sysconf (_SC_NPROCESSORS_CONF),它返回操作系统配置的处理器数。但是操作系统可能会禁用单个处理器,因此调用sysconf (_SC_NPROCESSORS_ONLN)返回当前在线(即可用)的处理器数。

我有两个问题:

  1. “配置的处理器数量”和“当前在线处理器的数量”之间有什么区别?
  2. 为什么x264在安卓系统中使用_SC_NPROCESSORS_CONF来获取CPU核心的数量?
EN

回答 1

Stack Overflow用户

发布于 2017-11-04 23:57:53

事实上,如果您查看所引用的源文件,它在Linux (非Android)上没有使用这两个源文件;而是在自己的线程上调用(2),并计算返回掩码中的1位数。

Linux系统可以支持“热插拔”CPU;这意味着可用CPU的数量可以随时间而变化,而无需重新启动。这可能是高可用性集群中的容错措施。或者它也可以是一种节能措施,例如在移动设备或嵌入式设备中。因此,x264显然试图在可用的情况下利用这一功能,只会回到必须使用的不太动态的选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47111338

复制
相关文章

相似问题

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