从本机代码检测Android上的CPU内核数

从本机代码检测Android上的CPU内核数,android,c++,linux,multithreading,android-ndk,Android,C++,Linux,Multithreading,Android Ndk,我正在使用sysconf(\u SC\u NPROCESSORS\u ONLN)(我相信这是推荐的方法)来获取CPU内核的数量。无论是Mac还是Linux,它都可以正常工作,但在我的4核Android平板电脑上,它返回2。如何从本机代码(不使用JNI调用Java Android API)获取Android上的实际内核数?无论是sysconf(\u SC\u NPROCESSORS\u ONLN)还是sysconf(\u SC\u NPROCESSORS\u CONF)都不能正常工作,但NDK库中

我正在使用sysconf(\u SC\u NPROCESSORS\u ONLN)(我相信这是推荐的方法)来获取CPU内核的数量。无论是Mac还是Linux,它都可以正常工作,但在我的4核Android平板电脑上,它返回2。如何从本机代码(不使用JNI调用Java Android API)获取Android上的实际内核数?

无论是
sysconf(\u SC\u NPROCESSORS\u ONLN)
还是
sysconf(\u SC\u NPROCESSORS\u CONF)
都不能正常工作,但NDK库中的
Android\u getCpuCount()
都不能正常工作。

您使用的是哪个CPU架构?还有,你检查过Linux吗?我记得在Android上看到这个bug,它在第一次调用该方法时返回活动CPU的数量,而不是设备上的CPU数量:@rakib:ARM。检查什么?是大的还是小的?你是通过/proc/cpuinfo找到4核的吗?@rakib:我怀疑它是大的。小的,它应该只是一个普通的4核ARMv7a。我没有看/proc/cpuinfo,我只知道CPU有4个内核。如果我对线程数进行硬编码
4
,我可以看到100%的CPU负载和适当的性能提升。它们是否都返回2而android_getCpuCount()返回4?如果是这样的话,请用这些信息和“adb shell cat/proc/cpuinfo”的输出提交一个bug。@fadden:我使用的是NDK r9和
sysconf(\u SC\u NPROCESSORS\u onlnn)
sysconf(\u SC\u NPROCESSORS\u CONF)
返回2,而
android\u getCpuCount()
返回4。