2023-01-20 323
我正在尝试为Android编写代码,这将为我提供处理器的某种信息(ID?)以及线程正在运行的核心.
我已经搜索了一些灵感来源,但没有运气.我所知道的是,我很可能需要一些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内调用功能,并得到适当的答复.
这里有人可以填写空白吗?
好消息是,必要的库和系统调用是在Android上定义的(sched_getcpu() and __ getcpu()).坏消息是,它们不是NDK的一部分.
您可以使用这个答案.
另一种方法是读取/proc/self/stat并解析processor条目. proc(5)man page 描述格式:
/proc/[pid]/stat Status information about the process. This is used by ps(1). It is defined in /usr/src/linux/fs/proc/array.c. ... processor %d (since Linux 2.2.8) CPU number last executed on.
这要慢得多,如果内核更新,”文件”格式可能会更改,因此不是推荐的方法.
这似乎对我有用:
//...
#include <sys/syscall.h>
//...
int getCpuId() {
unsigned cpu;
if (syscall(__NR_getcpu, &cpu, NULL, NULL) < 0) {
return -1;
} else {
return (int) cpu;
}
}
//...
以上所述是小编给大家介绍的Android:找出线程正在运行的核心,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/25913.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态