Android:找出线程运行在哪个内核上

标签 android multithreading concurrency android-ndk java-native-interface

我正在尝试为 Android 编写代码,它会给我一些关于处理器和运行线程的内核的信息(id?)。

我用 google 和 grep 搜索了一些灵感来源,但没有成功。我所知道的是,我很可能需要一些 C/C++ 调用。

我的工作如下:

#include <jni.h>

int getCpuId() {
    // missing code
    return 0;
}

int getCoreId() {
    // missing code    
    return 0;
} 

JNIEXPORT int JNICALL Java_com_spendoptima_Utils_getCpuId(JNIEnv * env,
        jobject obj) {
    return getCpuId();
}

JNIEXPORT int JNICALL Java_com_spendoptima_Utils_getCoreId(JNIEnv * env,
        jobject obj) {
    return getCoreId();
}

整个项目编译和运行都很好。我能够从 Java 中调用函数并得到正确的响应。

这里有人可以填空吗?

最佳答案

这似乎对我有用:

//...
#include <sys/syscall.h>
//...
int getCpuId() {

    unsigned cpu;
    if (syscall(__NR_getcpu, &cpu, NULL, NULL) < 0) {
        return -1;
    } else {
        return (int) cpu;
    }
}
//...

关于Android:找出线程运行在哪个内核上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114421/

相关文章:

java - 是否可以从 Java 代码绑定(bind)和访问 C 结构成员?

c++ - C/C++ 中的跨平台线程/静态变量 fork

java - 如何使用具有多种消息类型的干扰器

java - 执行器服务 : FIFO ordering by key

java - 如何使范围树实现线程安全

android - 在android中播放歌曲时显示时间

android - React Native 将 apk 文件的大小增加了 6.5 MB

android - 如何从 Android 中的 Java 类访问布局 XML 的对象

c# - MVC中使用webbackgrounder nuget长时间运行后台任务

java - 确保线程在 Java 中获得(大约)相等的 CPU 时间