修复在某些内核上执行的线程

可能重复:
将线程绑定到处理器

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

这就是pthread_setaffinity_np(3)所做的。

pthread_setaffinity_np()函数将线程线程的CPU关联掩码设置为由cpuset指向的CPU集。 如果调用成功,并且线程当前未在cpuset中的某个CPU上运行,则将其迁移到其中一个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()