潮声隔雨深 · 2020年02月14日

线程绑定arm核,绑定后如何解绑定

问题:在ubuntu TX2平台上,将线程与6个arm核心中的一个绑定,想在运行时下解绑定,采用的方法是:

  1. 用get接口获取当前线程绑定的mask;
  2. 判断当前线程是否与某个核心绑定;
  3. 如果已经绑定,再调用CPU_CLR接口将该核心从mask中移除;
  4. 将第三步mask作为参数,调用setj接口重新绑定线程;

测试结果,发现线程一旦绑定了该核心,则无法解绑定。 猜测原因是线程在绑定该核心的时候,无其它可调度的cpu,故无法解绑定。

请问如何解绑?

1 个回答 得票排序 · 时间排序
一知半解 · 2020年02月14日

http://man7.org/linux/man-pag...

第三步尝试直接用 sched_setaffinity( ... new_cpu_mask... ) ?

或者 CPU_OR() 先添加一个新的 cpu mask, 然后再 CPU_CLR() 掉 Old cpu mask?

你的回答