修复线程以在某些核心上执行

时间:2011-08-02 18:50:34

标签: c linux pthreads

  

可能重复:
  Bind threads to processors

在Linux中,是否可以修复线程以在某些内核上执行。如果可能的话,我也想知道是否可以在某个核心上独占执行一个线程,这样就不允许在该线程执行时在该核心上执行任何其他线程。

1 个答案:

答案 0 :(得分:3)

那是pthread_setaffinity_np(3)的作用。

  

pthread_setaffinity_np()函数设置CPU亲和性掩码   cpuset指向CPU集的线程线程。如果是电话   成功,并且该线程当前未在其中一个CPU上运行   在cpuset中,它将被迁移到其中一个CPU。

举个例子:

cpu_set_t set;
CPU_ZERO(&set);
CPU_SET(3, &set); /* Run only on the third CPU. */

pthread_setaffinity_np(thr, CPU_SETSIZE, &set);


您也可以使用sched_setaffinity(2)gettid手册页说明:

  

如果您使用的是POSIX线程API,那么使用   pthread_setaffinity_np(3)代替sched_setaffinity()