Android设置线程亲和性

标签 android c multithreading android-ndk multicore

根据 this StackOverflow question 的回答我该如何创建合适的 掩码的整数?

我进行了一些谷歌搜索,我发现的所有内容都使用 sched.h 中的 CPU_SET 宏,但它在 cpu_set_t 结构上运行,这些结构在以下情况下未定义使用NDK。当尝试使用 CPU_SET 链接器给我 undefined reference 错误(即使我链接到 pthread)。

最佳答案

好吧,最后我找到了一些直接从 sched.h 中获取的版本。如果有人有同样的问题并且不想花时间搜索它,我会在这里发布。这很有用。

#define CPU_SETSIZE 1024
#define __NCPUBITS  (8 * sizeof (unsigned long))
typedef struct
{
   unsigned long __bits[CPU_SETSIZE / __NCPUBITS];
} cpu_set_t;

#define CPU_SET(cpu, cpusetp) \
  ((cpusetp)->__bits[(cpu)/__NCPUBITS] |= (1UL << ((cpu) % __NCPUBITS)))
#define CPU_ZERO(cpusetp) \
  memset((cpusetp), 0, sizeof(cpu_set_t))

当原始 setCurrentThreadAffinityMask 中的参数类型(来自问题中提到的帖子)被简单地替换为 cpu_set_t 时,这很有效。

关于Android设置线程亲和性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16319725/

相关文章:

android - 如何取消异步任务

c - 寻求调试帮助,为什么这个分词器没有正确复制数组?

c - printf %n 如何计算字符数?

java - 我想使用 Java 中的生产者-消费者模型将竞争条件复制到死锁

Java 执行器通过内部执行器超时取消作业

android - 没有符合条件的设备可以安装应用。 |安卓|奥利奥 8.1.0

android - 是否有机会在 GCM 中为两个不同的应用程序使用相同的 token ? [安卓]

android - 如何实现像 Google Play 那样的可折叠 View ?

写入二进制文件的字符矩阵

java - 动态 ReentrantReadWriteLock-s 用于同步对大量对象的访问