Linux/Android NDK线程绑定
Posted waraiotoko
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux/Android NDK线程绑定相关的知识,希望对你有一定的参考价值。
在线程中的设置代码如下,首先需要确保你是单个线程在跑!
void bind_to_cpu(int cpu_id) {
int64_t cores = sysconf(_SC_NPROCESSORS_CONF);
PRV_DPT_LOGI("CPUS:?%lu
", cores);
if(cpu_id>=cores) {
PRV_DPT_LOGE("bind_to_cpu: assertion error!");
return;
}
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(cpu_id, &mask);
if(sched_setaffinity(0, sizeof(mask), &mask)==-1) {
PRV_DPT_LOGE("bind_to_cpu: failed to set affinity!");
return;
}
}
void set_thread_name(const char * name){
prctl(PR_SET_NAME, name);
}
void *DepthPreview_Thread(void * parent){
// bind this thread to given cpu
set_thread_name("prv_dpt");
cv::setNumThreads(1); // if you use opencv in android ndk
bind_to_cpu(0);
// some other code here
}
查看对应线程的cpu占用方法如下:
adb shell top -p [线程所属进程的pid,如相机进程就是camerahalserver的pid,也是通过top命令查看] -H | [findstr/grep] [线程名称,采用prctl设置线程名称]
以上是关于Linux/Android NDK线程绑定的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情
NDK: ant 错误 [javah] Exception in thread "main" java.lang.NullPointerException 多种解决办法(代码片段
Android ndk binder线程导致应用程序出现问题