在Linux中,是否可以修复线程以在某些内核上执行。如果可能的话,我也想知道是否可以在某个核心上独占执行一个线程,这样就不允许在该线程执行时在该核心上执行任何其他线程。
答案 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()
。